Page 15 - MATINF Nr.2
P. 15

Concursul de Informatic˘a Programming Day                                                      15



            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.

                Restrict , ii s , i preciz˘ari

               1. 1 ≤ num˘arul de localit˘at , i ≤ 10000
               2. 1 ≤ w ≤ 300
               3. Pentru rezolvarea corect˘a a cerint , ei 1 se acord˘a 20% din punctaj
               4. Toate codurile localit˘at , ilor formeaz˘a un s , ir de numere consecutive ce ˆıncepe cu 1


                Exemple


                      insule.in    insule.out     Explicat , ie
                      1            1 0 3          p = 1
                      3 4                         Prima insul˘a cont , ine localit˘at , ile cu codurile
                      3 1 7 4                     1, 4, 7 s , i o s , osea [1, 4].
                      1 2                         A doua insul˘a are o singur˘a localitate cu codul
                      4 8 3 6 5                   2 s , i zero s , osele.
                      1 4                         A treia insul˘a cont , ine localit˘at , ile cu codurile
                      8 3                         3, 5, 6, 8 s , i 3 s , osele: [8, 3], [5,8], [3,5].
                      5 8
                      3 5
                      insule.in    insule.out     Explicat , ie
                      2              1 3          p = 2
                      3 4                         Prima insul˘a cont , ine localit˘at , ile cu codurile
                      3 1 7 4                     1, 4, 7 s , i o s , osea [1, 4].
                      1 2                         A doua insul˘a are o singur˘a localitate cu codul
                      4 8 3 6 5                   2 s , i zero s , osele.
                      1 4                         A treia insul˘a cont , ine localit˘at , ile cu codurile
                      8 3                         3, 5, 6, 8 s , i 3 s , osele: [8, 3], [5,8], [3,5].
                      5 8                         Prima insul˘a cont , ine dou˘a grupuri de localit˘at , i
                      3 5                         cu conexiune pe s , osele {1, 4} si {7}.
                                                  A doua insul˘a cont , ine un singur grup
                                                  cu o localitate {2}.
                                                  A treia insul˘a cont , ine dou˘a grupuri de
                                                  localit˘at , i cu conexiune pe s , osele {3, 8,5} si {6}.
                                                  Insulele 1 s , i 3 au un num˘ar maxim
                                                  de grupuri cu conexiune pe s , osele.


                Timp maxim de execut , ie: 0.4 secunde/test.
                Memorie total˘a disponibil˘a 4 MB, din care 2 MB pentru stiv˘a.
                                     Doru Constantin, Costel B˘alc˘au, Pites , ti, Gabriel Boroghin˘a, Bucures , ti

                Solut , ie
                Pentru rezolvarea problemei trebuie s˘a construim un graf neorientat ˆın care nodurile sunt
            localit˘at , i, iar muchiile sunt s , osele. Memorarea grafului se va face folosind liste de adiacent , ˘a.
            Pentru fiecare localitate vom ret , ine ˆıntr-un vector insula c˘areia ˆıi apart , ine (insula[x] = i, dac˘a x
                              ˆ
            este pe insula i). In momentul ˆın care se citesc perechile de localit˘at , i care alc˘atuiesc s , osele se
            actualizez˘a componentele unui vector ce ret , ine num˘arul de s , osele din fiecare insul˘a (ˆın C++
   10   11   12   13   14   15   16   17   18   19   20