Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | ostrov.in, ostrov.out | Sursă | Concursul National de Informatica "Adolescent Grigore Moisil" 17 |
Autor | Chichirim George | Adăugată de | |
Timp execuţie pe test | 1.5 sec | Limită de memorie | 131072 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Ostrov
Recent, s-a descoprit o noua insula numita Ostrov. Initial, aceasta insula nu are niciun oras sau strada construita. Datorita proprietatilor sale geografice extraordinare, multi actionari vor sa investeasca in aceasta insula pentru a-si construi fabrici de apa magica. Astfel, exista Q operatii de forma:
- 0 -> se construieste orasul N = N + 1
- 1 X nr m iar pe urmatoarele m linii cate 3 numere x, y, s ce reprezinta o strada bidirectionala intre orasele x si y de cost s, x si y apartinand celor nr orase construite reunit cu orasul X -> proprietarul orasului X construieste inca nr orase (orasele de la N+1 la N+nr) care sunt legate intre ele (orasul X cu cele nr orase noi) prin cele m strazi bidirectionale mentionate mai sus. Dupa aceasta operatie N = N + nr
- 2 x y s -> pentru ca nu se poate ajunge din orasul x in orasul y, investitorii care detin aceste doua orase colaboreaza si construiesc o strada bidirectionala intre orasele x si y de cost s
- 3 x y s -> costul strazii dintre orasele x si y devine s. Se garanteaza ca strada dintre x si y a fost construita anterior
- 4 x y -> sa se afiseze costul minim al unui drum de la orasul x la orasul y, sau -1 daca nu se poate ajunge de la orasul x la orasul y
Date de intrare
Fişierul de intrare ostrov.in contine pe pe prima linie numarul Q, iar dupa aceea cele Q operatii de forma celor de mai sus.
Date de ieşire
În fişierul de ieşire ostrov.out sa se afiseze raspunsul pentru fiecare operatie de tipul 4 pe cate o linie separata.
Restricţii
- la final N ≤ 100000
- la final numarul de strazi ≤ 300000
- nr ≤ 10
- numarul operatiilor de tipul 3 ≤ 10000
- numarul operatiilor de tipul 4 ≤ 300000
- **ATENTIE! Se recomanda parsarea fisierului de intrare. Puteti folosi codul de pe siteul acesta **
Exemplu
ostrov.in | ostrov.out |
---|---|
11 0 1 1 3 4 1 2 3 2 4 5 1 3 1 3 4 2 4 1 4 0 2 3 5 4 1 2 3 4 2 6 2 6 8 3 6 7 1 8 7 1 4 5 7 0 4 9 2 3 2 4 1 4 5 7 | 3 11 -1 10 |
Explicaţie
...