Laiko ribojimas: 1s
Atminties ribojimas: 16MB
Policija
Šiame uždavinyje Maksimas ir Linas tęsia savo kelionę (taip, istorija prasidėjo kitame uždavinyje). Iš taško jiems reikia nuvykti į tašką . Kaip ir visuomet, Maksimas nori važiuoti trumpiausiu keliu. Negalime atskleisti visų detalių, tačiau šios kelionės metu jiedviems reikia išvengti policijos.
Parašykite programą, kuri rastų trumpiausią įmanomą kelią iš taško į tašką , tokį, kuriame nepasitaikytų policija, arba nustatytų, kad tokio kelio nėra.
Pradiniai duomenys
Pirmoje eilutėje pateikti penki sveikieji skaičiai: , , , ir . yra sankryžų skaičius (), visos sankryžos sunumeruotos skaičiais nuo iki . ir - tai sankryžų, kuriose kelionę pradės ir baigs mūsų keliautojai, numeriai. yra gatvių, o - policijos ekipažų skaičius.
Sekančiose eilučių įrašyta po tris skaičius , ir , reiškiančių, jog sankryžas ir jungia gatvė, kurios ilgis yra metrų (). Gatvės yra dviejų pusių eismo; dvi sankryžas jungia ne daugiau negu viena gatvė.
Toliau, po vieną eilutėje, faile įrašyta sankryžų numerių, kuriose budi policijos ekipažai. Tarp šių sankryžų numerių nėra ir .
Rezultatai
Rezultatus programa turi įrašyti į ekraną. Jei toks kelias egzistuoja, pirmoje eilutėje turi būti įrašytas trumpiausio kelio ilgis , o antroje - sankryžų numerių seka, apibūdinanti šį kelią. Seka turi prasidėti numeriu , baigtis numeriu . Šioje sekoje neturi būti sankryžų, kuriose budi policijos ekipažai.
Jei yra keli sprendiniai, programa gali pateikti bet kurį iš jų. Jei "saugaus" kelio nėra, programa į pirmą rezultato failo eilutę turi įrašyti .
Pavyzdžiai
Pradiniai duomenys | Rezultatai |
---|---|
6 1 6 8 2 1 2 500 1 3 300 1 4 200 2 5 800 2 6 1500 3 5 300 4 5 300 5 6 300 3 4 |
1600 1 2 5 6 |
7 1 7 9 2 1 2 1300 1 3 1000 2 4 900 2 5 550 3 4 1100 3 5 1200 4 6 860 5 7 1420 6 7 1170 4 5 |
-1 |