Page 14 - MATINF Nr.2
P. 14

14                                                         D.A. Popescu, C. B˘alc˘au, D. Constantin



            eliminarea perechii din vˆarful stivei. Rezultatul va fi determinat folosind perechea din vˆarful
            stivei (dac˘a exist˘a), sau va fi 0 dac˘a stiva este vid˘a.

                Pentru a doua cerint , ˘a vom precalcula folosind metoda program˘arii dinamice o matrice
            next[c][poz], care ne spune care este cea mai din stˆanga pozit , ie, aflat˘a la dreapta pozit , iei poz,
            pe care se afl˘a un caracter c. Dac˘a nu exist˘a un caracter c pe o pozit , ie >= poz, vom ret , ine ˆın
            next valoarea n + 1 (n fiind lungimea lui s). De asemenea, vom folosi s , i o stiv˘a ˆın care salv˘am
            dup˘a fiecare operat , ie primul index (din s) la care se termin˘a o aparit , ie a lui t ca substring ˆın s
            (sau n + 1 dac˘a t nu se g˘ases , te ca substring ˆın s). La fiecare operat , ie ”push c” verific˘am vˆarful
            stivei s , i inser˘am ˆın stiv˘a valoarea next[c][vf], unde vf este elementul din vˆarful stivei. La fiecare
            operat , ie ”pop” elimin˘am vˆarful stivei (dac˘a stiva nu e vid˘a). Rezultatul dup˘a fiecare operat , ie se
            determin˘a comparˆand elementul din vˆarful stivei cu n: dac˘a este <= n, ˆınseamn˘a c˘a exist˘a o
            aparit , ie a lui t ca subs , ir ˆın s care se termin˘a la pozit , ia respectiv˘a, altfel t nu se reg˘ases , te ˆın s.

                Problema 2 – insule
            Un arhipelag este alc˘atuit din mai multe insule, codificate prin numerele 1, 2, . . . , w. Pe unele
            insule se g˘asesc localit˘at , i. Localit˘at , ile arhipelagului sunt codificate prin numere naturale nenule.
                                                                  ˆ
            Nu exist˘a dou˘a localit˘at , i codificate cu acelas , i num˘ar. Intre localit˘at , ile aceleias , i insule pot exista
            s , osele (leg˘aturi directe), num˘arul total de s , osele din arhipelag este m.

                Centrul de statistic˘a al arhipelagului realizeaz˘a cˆateva studii s , i pe baza informat , iilor de la
            ministerul de transport obt , ine informat , iile:

               1. num˘arul de leg˘aturi directe ˆıntre localit˘at , ile fiec˘arei insule i, 1 ≤ i ≤ w;
               2. codurile insulelor (ˆın ordine cresc˘atoare) care cont , in un num˘ar maxim de grupuri de
                  localit˘at , i ˆıntre care se poate circula direct sau folosind localit˘at , i intermediare.

                Cerint , ˘a

                Cunoscˆand w, codurile localit˘at , ilor de pe fiecare insul˘a s , i cele m perechi de localit˘at , i din
            arhipelag ˆıntre care exist˘a leg˘aturi directe prin s , osele se cere s˘a determinat , i:

               1. num˘arul de leg˘aturi directe ˆıntre localit˘at , ile fiec˘arei insule i, 1 ≤ i ≤ w;
               2. codurile insulelor (ˆın ordine cresc˘atoare) care cont , in un num˘ar maxim de grupuri de
                  localit˘at , i ˆıntre care se poate circula direct pe s , osele sau folosind localit˘at , i intermediare.


                Date de intrare

                Fis , ierul de intrare insule.in cont , ine pe prima linie un num˘ar natural p. Pentru toate
            testele de intrare, num˘arul p poate avea doar valoarea 1 sau 2. Pe a doua linie a fis , ierului se
            afl˘a w s , i m separate ˆıntre ele printr-un spat , iu. Urmeaz˘a w linii cu localit˘at , ile fiec˘arei insule ˆın
            formatul: k x 1 x 2 ... x k , unde k este num˘arul de localit˘at , i, iar x 1 x 2 ... x k localit˘at , ile aflate pe
            insula respectiv˘a. Apoi urmeaz˘a m perechi cu leg˘aturile directe prin s , osele ˆıntre localit˘at , i, cˆate
            o pereche pe o linie, codurile localit˘at , ilor fiind separate prin cˆate un spat , iu.
                Date de ies , ire

                                                                                             ˆ
                Dac˘a valoarea lui p este 1, se va rezolva numai punctul 1) din cerint , ˘a. In acest caz, ˆın
            fis , ierul de ies , ire insule.out se vor scrie w numere separate prin cˆate un spat , iu, reprezentˆand
            num˘arul de leg˘aturi directe ˆıntre localit˘at , ile fiec˘arei insule i, 1 ≤ i ≤ w.
                                                                                             ˆ
                Dac˘a valoarea lui p este 2, se va rezolva numai punctul 2) din cerint , ˘a. In acest caz, ˆın
            fis , ierul de ies , ire insule.out se vor scrie codurile insulelor (ˆın ordine cresc˘atoare) care cont , in
   9   10   11   12   13   14   15   16   17   18   19