trip
Gigel s-a hotarat sa face o calatorie prin tara sa. El vrea sa mearga pana intr-un oras destinatie iar apoi sa se intoarca in orasul din care a plecat. Pentru ca excursia sa nu devina prea monotona, Gigel a pus urmatoarea conditie: drumul de la dus si cel de la intoarcere trebuie sa contina un numar minim de sosele comune. (Nici drumul de la dus, nici cel de la intoarcere nu au voie sa parcurga aceeasi sosea de la multe ori).
Cerinta
Scrieti un program care sa-l ajute pe Gigel sa gaseasca un drum dus-intors
care sa contina cat mai putine sosele comune.
Date de intrare
Pe prima linie a fisierul trip.in se afla 2 intregi S si D (S<>D) care reprezinta orasul de plecare si orasul destinatie. Urmatoarea linie contine 2 intregi N si M, unde N (3<=N<=1000) este numarul de orase si M (2<=M<=100000) este numarul de sosele. Urmatoarele M linii contin cate 2 intregi P si Q (1<=P<=N, 1<=Q<=N, P<>Q) cu semnificatia ca intre orasul P si orasul Q exista o sosea (pe care se poate merge in ambele sensuri). Orasele sunt numerotate de la 1 la N.
Date de iesire
Prima linie a fisierului trip.out trebuie sa contina un intreg care reprezinta numarul minum de sosele comune pe care le au cele doua drumuri. A doua linie trebuie sa contina o succesiune de noduri care reprezinta drumul de la S la D (succesiunea trebuie sa contina si S si D). A treia linie trebuie sa contina un drum de intoarcere de la D la S. Daca nu exista doua astfel de drumuri, fisierul de iesire va contine -1.
Restrictii
Exemple
trip.in |
trip.out |
1 6 |
2
|
Mod de punctare
Daca prima linie contine numarul corect de sosele comune, obtineti 2 puncte. Daca drumurile de pe liniile 2 si 3 sunt corecte, mai obtineti inca 3 puncte (deci 5 puncte in total). Daca prima linie este gresita nu primiti nici un punct (chiar daca cele doua drumuri sunt corecte).
Timp maxim de executie/test: 0.1 secunde
Daniel Dumitran
Universitatea Politehnica Bucuresti
Contact:odumitran@go.ro