Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-05-08 17:50:18.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:tcast.in, tcast.outSursăONI 2008 - baraj
AutorMugurel Ionut AndreicaAdăugată detoni2007Pripoae Teodor Anton toni2007
Timp execuţie pe test0.225 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Tcast

Reteaua de comunicatie a orasului Ploiesti este alcatuita din N noduri, numerotate de la 1 la N. Exista N-1 perechi de noduri intre care exista conexiune directa (aceste noduri sunt denumite vecini). O conexiune directa asigura comunicare in ambele sensuri intre nodurile conectate. Conexiunile directe sunt construite astfel incat oricare doua noduri ale retelei pot comunica (direct, sau indirect, prin intermediul altor noduri).
La momentul de timp 0, nodul 1 are un mesaj pe care doreste sa il trimita tuturor celorlalte noduri. Pentru aceasta, la orice moment de timp întreg t, orice nod x ($1 ≤ x ≤ N$) care a primit in prealabil mesajul (sau care l-a primit exact la momentul t), il poate trimite unui vecin y al sau care nu a primit încă mesajul. Transmisia mesajului durează 1 unitate de timp – asadar, nodul y va primi mesajul la momentul t+1. Un nod poate trimite mesajul catre mai multi vecini ai sai, dar nu simultan.
Din motive de securitate, la anumite momente de timp din intervalul [ 0 , T ), nodurile de comunicaÅ£ie sunt verificate. Pentru fiecare nod x ($1 ≤ x ≤ N$) si fiecare moment de timp t ($0 ≤ t ≤ T-1$), se cunoaÅŸte dacă nodul x este verificat sau nu la momentul t. Durata verificarii este de 1 unitate de timp (astfel, daca nodul x este verificat la momentul t, verificarea se termină la momentul t+1). 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).

Determinaţi durata de timp minimă după care mesajul poate ajunge de la nodul 1 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 2 numere întregi, separate printr-un spaÅ£iu: N ÅŸi T. Următoarele N-1 linii conÅ£in câte două numere întregi x ÅŸi y, separate printr-un spaÅ£iu, având semnificaÅ£ia că nodurile x ÅŸi y sunt vecine în cadrul reÅ£elei de comunicaÅ£ie. Următoarele N linii conÅ£in câte T numere întregi din mulÅ£imea { 0, 1 }. Al t-lea număr ($1 ≤ t ≤ T$) de pe a i -a dintre aceste linii este 1, dacă nodul i este verificat la momentul t-1 (ÅŸi 0 în caz contrar).

Date de iesire

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.

Restrictii

  • 1 ≤ N ≤ 2000
  • 1 ≤ T ≤ 1000
  • Durata de timp după care toate nodurile primesc mesajul poate fi mai mare decât T

Exemplu

table(example). |_. tcast.in |_. tcast.out |
| 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

5

Explicatie

La momentul 0 nodul 1 este verificat ÅŸi nu poate transmite mesajul nici unui vecin. La momentul 1, nodul 1 trimite mesajul nodului 4. La momentul 2, nodul 1 trimite mesajul nodului 2, iar nodul 4 trimite mesajul nodului 5. La momentul 3, nodul 2 trimite mesajul nodului 3, iar la momentul 4 nodul 3 trimite mesajul nodului 6. La momentul 5, nodul 6 este ultimul nod care primeste mesajul.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?