Se dă un graf orientat cu noduri și muchii. Fiecare muchie are costul (poate fi parcursă într-un minut). Doi „prieteni” (veri) pornesc din nodul . Unul dintre ei vrea să ajungă în nodul , iar celălalt vrea să ajungă în nodul .
Cei doi prieteni se vor plimba împreună până când ciclează, adică până când vor ajunge în același nod a doua oară, notat cu . După ciclare, ei își pot continua drumurile separat. Totuși, dacă vor, pot să meargă amândoi în continuare pe același drum: doar dispare obligația de a merge împreună.
Fiecare dintre ei trebuie să-și termine drumul doar după ciclare, adică după ce nu mai sunt obligați să meargă împreună. Totuși, este în regulă dacă drumul unuia se termină exact în nodul în care au ciclat (adică ciclează în sau ).
Care este numărul minim de minute necesar astfel încât să fie posibil ca amândoi să ajungă la destinațiile lor, în timpul alocat, în , respectiv ?
Cu alte cuvinte, dacă cei doi veri ciclează pentru prima oară după exact minute, apoi își continuă drumurile pentru alte , respectiv minute, vrem să aflăm valoarea minimă a lui .
Există două tipuri de cerințe, reprezentate printr-un număr :
- Dacă , trebuie calculată valoarea minimă a lui .
- Dacă , trebuie afișat un triplet de drumuri care poate fi urmat de cei doi veri (drumul comun din până în , drum urmat ulterior de primul văr din până în , drum urmat ulterior de al doilea văr din până în ), astfel încât valoarea asociată drumurilor, adică să fie minimă. Orice triplet corect cu valoarea asociată minimă poate fi afișat.
Date de intrare
Pe prima linie se găsește . Pe a doua linie se găsesc doi întregi și . Pe a treia linie se găsesc trei întregi , și .
Pe următoarele linii se găsesc câte doi întregi și , reprezentând că există o muchie direcționată de la nodul la nodul , care poate fi parcursă într-un minut (de cost ).
Date de ieșire
Dacă , afișați un singur număr, valoarea minimă a lui .
Dacă , afișati trei drumuri. Primul drum este format de la până la . Al doilea drum este format de la până la . Al treilea drum este format de la până la , unde , , , sunt definite anterior.
Fiecare drum se va tipări pe două linii separate:
- Pe prima linie va apărea lungimea drumului, adică numărul de muchii.
- Pe a doua linie vor apărea nodurile drumului, separate prin câte un spațiu.
Valorea asociată drumurilor, adică , trebuie să fie minimă.
Restricții și precizări
- Nodurile sunt numerotate de la la .
- .
- Se garantează că pentru orice test dat spre rezolvare există cel puțin o soluție.
- Nu există muchii de la un nod la el însuși. Există maxim o muchie orientată între oricare două noduri distincte.
- Dacă verii se despart în , primul văr poate să nu mai facă nimic (drumul lui ulterior ar avea muchii și l-ar conține doar pe ; vezi exemplul 3). Analog pentru .
- Pentru fiecare subtask, testele cu vor conta pentru din punctaj.
- Pentru 30 de puncte, , și toate muchiile sunt de forma , unde .
- Pentru 50 de puncte, .
- Pentru 20 de puncte, și .
Exemplul 1
veri.in
2
7 8
1 3 4
1 2
2 5
5 7
7 6
6 7
6 5
5 3
7 4
veri.out
5
1 2 5 7 6 5
1
5 3
2
5 7 4
Drumul urmat în comun de cei doi este . Drumul urmat de primul văr în continuare este . Drumul continuat de al doilea văr este . Astfel, primul văr are nevoie de minute pentru a ajunge în , iar al doilea de minute pentru a ajunge în , deci răspunsul pentru este . Cei doi ar fi putut să cicleze în , dacă ar fi urmat drumul . Totuși, deși al doilea văr ar fi ajuns în în doar minute (), primul văr ar fi avut nevoie de cel puțin minute ca să ajungă în ().
Exemplul 2
veri.in
2
7 8
1 2 5
1 3
1 4
3 2
4 5
6 4
7 3
3 6
4 7
veri.out
5
1 4 7 3 6 4
3
4 7 3 2
1
4 5
Răspunsul corect pentru este . Pentru acest exemplu există două soluții corecte. A doua soluție este tripletul de drumuri .
Exemplul 3
veri.in
2
5 6
1 3 5
1 2
2 3
3 4
4 3
3 1
3 5
veri.out
4
1 2 3 4 3
0
3
1
3 5
Răspunsul corect pentru este . Este folosit un ciclu care se termină în .
Exemplul 4
veri.in
1
4 4
1 2 4
1 3
3 2
2 3
2 4
veri.out
5
Pentru , singurul triplet corect de drumuri este .
Atenție! Tripletul este greșit, deoarece primul nod vizitat a doua oară nu este .