Cerință
“Walking through the city […] I just have to find my way”
MIron, plictisit de viaţa de zi cu zi, a hotărât să iasă la plimbare în oraşul său natal, Deva. Acesta are o structură de arbore (graf neorientat aciclic conex), fiind format din pieţe şi străzi ce le conectează. MIron doreşte să îşi aleagă o piaţă din care să îşi înceapă plimbarea, şi să parcurgă un drum cât mai lung în oraş, fără să treacă prin aceeaşi piaţă de două ori (pentru a nu se plictisi şi mai mult).
Deoarece MIron este prieten bun cu primarul oraşului, îi poate cere acestuia să mute o stradă, eliminând-o dintre pieţele pe care le conectează momentan, şi adăugând-o între alte două pieţe, astfel încât să se menţină proprietatea de arbore a oraşului Deva.
Ştiind că MIron poate apela la primar pentru mutarea unei singure străzi, voi trebuie să determinaţi lungimea maximă pe care o poate avea drumul lui MIron.
Deoarece MIron nu ştie pe care stradă să o ceară mutată, el vrea să afle lungimea maximă a drumului ce se poate forma pentru fiecare din cele cereri posibile.
Date de intrare
Pe prima linie a fişierului plimbare.in
se află un număr întreg , reprezentând numărul de pieţe din orașul Deva.
Pe următoarele linii se află descrise străzile oraşului, fiecare din aceste linii fiind formate din două numere şi reprezentând faptul că există o stradă între pieţele şi .
Date de ieșire
Fişierul de ieşire plimbare.out
va conţine linii. Pe cea de-a -a din aceste linii se află lungimea drumului maxim dacă s-ar muta cea de-a -a stradă din fişierul de intrare.
Restricții și precizări
- lungimea drumului între două pieţe reprezintă numărul de străzi ce trebuie parcurse pentru a ajunge dintr-o piaţă în cealaltă, fără a trece printr-o piaţă de mai multe ori.
Exemplu
plimbare.in
5
1 2
1 3
4 3
5 3
plimbare.out
3
4
4
4
Explicație
Putem lăsa strada la locul ei, obținând drumul .
Strada se poate muta între pieţele şi , obținându-se drumul .
Strada se poate muta între pieţele şi , obținându-se drumul .
Strada se poate muta între pieţele şi , obținându-se drumul .