Reţeaua de comunicaţie a oraşului Ploieşti este alcatuită din noduri, numerotate de la la . Există perechi de noduri între care există conexiune directă (aceste noduri sunt denumite vecini). O conexiune directă asigură comunicare în ambele sensuri între nodurile conectate. Conexiunile directe sunt construite astfel încât oricare două noduri ale reţelei pot comunica (direct, sau indirect, prin intermediul altor noduri). La momentul de timp , nodul are un mesaj pe care doreşte să îl trimită tuturor celorlalte noduri. Pentru aceasta, la orice moment de timp întreg , orice nod care a primit în prealabil mesajul (sau care l-a primit exact la momentul t), îl poate trimite unui vecin al său care nu a primit încă mesajul. Transmisia mesajului durează unitate de timp – aşadar, nodul va primi mesajul la momentul . Un nod poate trimite mesajul către mai mulţi vecini ai săi, dar nu simultan.
Din motive de securitate, la anumite momente de timp din intervalul , nodurile de comunicaţie sunt verificate. Pentru fiecare nod şi fiecare moment de timp , se cunoaşte dacă nodul este verificat sau nu la momentul . Durata verificării este de unitate de timp (astfel, dacă nodul este verificat la momentul , verificarea se termină la momentul ). La fiecare moment de timp la care un nod este verificat, acesta nu poate trimite nici un mesaj (dar poate primi mesaje de la vecinii săi).
Cerinţă
Determinaţi durata de timp minimă după care mesajul poate ajunge de la nodul la toate nodurile (în cazul unei strategii optime de distribuţie a mesajului).
Date de intrare
Prima linie a fişierului de intrare tcast.in
conţine numere întregi, separate printr-un spaţiu: şi . Următoarele linii conţin câte două numere întregi şi , separate printr-un spaţiu, având semnificaţia că nodurile şi sunt vecine în cadrul reţelei de comunicaţie. Următoarele linii conţin câte numere întregi din mulţimea {}. Al -lea număr de pe a -a dintre aceste linii este , dacă nodul este verificat la momentul (şi în caz contrar).
Date de ieșire
Fişierul de ieşire tcast.out
va conţine o singură linie pe care va fi scrisă durata de timp minimă după care toate nodurile primesc mesajul, în cazul unei strategii optime de distribuţie a mesajului.
Restricții și precizări
- Durata de timp după care toate nodurile primesc mesajul poate fi mai mare decât
Exemplul 1
tcast.in
6 5
1 2
2 3
3 6
1 4
4 5
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
tcast.out
5
Explicație
La momentul nodul este verificat şi nu poate transmite mesajul nici unui vecin. La momentul , nodul trimite mesajul nodului . La momentul , nodul trimite mesajul nodului , iar nodul trimite mesajul nodului . La momentul , nodul trimite mesajul nodului , iar la momentul nodul trimite mesajul nodului . La momentul , nodul este ultimul nod care primește mesajul.