Krzysztof Diks, Marcin Kubica (przekład)

Światła drogowe

W mieście Dingilville wprowadzono niezwykły sposób sterowania ruchem ulicznym. Są tam skrzyżowania i łączące je drogi. Pomiędzy dowolnymi dwoma skrzyżowaniami jest co najwyżej jedna droga. Żadna droga nie łączy skrzyżowania z nim samym. Czas przejazdu każdą drogą jest taki sam dla obu kierunków jazdy. Na każdym skrzyżowaniu jest jedno światło, które w każdym momencie jest albo niebieskie, albo purpurowe. Światło na każdym skrzyżowaniu zmienia się cyklicznie: niebieskie świeci przez pewien okres czasu, a potem purpurowe przez pewien okres czasu, itd. Wolno przejechać drogą łączącą dwa skrzyżowania wtedy i tylko wtedy, gdy w momencie ruszania światła na obu tych skrzyżowaniach mają taki sam kolor. Jeżeli pojazd przyjeżdża na skrzyżowanie dokładnie w chwili zmiany świateł na skrzyżowaniu(-ach), musisz przyjąć nowe kolory świateł. Pojazdy mogą czekać na skrzyżowaniach. Masz plan miasta pokazujący:

Masz znaleźć sposób przejazdu w najkrótszym czasie, od zadanego skrzyżowania początkowego do zadanego skrzyżowania końcowego, zaczynając w momencie rozpoczęcia ruchu. W przypadku, gdy istnieje wiele takich sposobów przejazdu, masz podać tylko jeden z nich.

Założenia

Wejście

Wyjście

Plik wyjściowy jest plikiem tekstowym o nazwie lights.out. Jeśli istnieje sposób przejazdu:

Jeśli szukany sposób przejazdu nie istnieje:

Przykład

lights.inp:

1 4
4 5
B 2 16 99
P 6 32 13
P 2 87 4
P 38 96 49
1 2 4
1 3 40
2 3 75
2 4 76
3 4 77

lights.out:

127
1 2 4

Ocena

Ograniczenie na czas działania Twojego programu wynosi 2s. Nie można uzyskać części punktów za pojedynczy test.