calculatoare, numerotate de la la , sunt interconectate într-o reţea. Calculatorul deţine nişte informaţii pe care doreşte să le transmită tuturor celorlalte calculatoare (acest tip de transmisie de informaţii este cunoscut sub numele de broadcast). Pentru aceasta, programul care rulează pe calculatorul trebuie să stabilească o strategie inteligentă de transmitere a informaţiilor, astfel încât acestea să ajungă la toate celelalte calculatoare într-un timp cât mai scurt. Oricare două calculatoare pot comunica între ele şi se cunoaşte durata de transmisie a informaţiilor de la orice calculator la orice calculator (durata transmisiei de la la poate fi diferită de durata transmisiei de la la ). Din momentul în care un calculator a primit informaţiile, acesta le poate transmite mai departe altor calculatoare. La orice moment de timp, un calculator poate transmite informaţii numai unui singur alt calculator. Aşadar, dacă un calculator doreşte să transmită informaţii calculatoarelor şi , el va trebui să transmită întâi informaţiile calculatorului , iar după ce acestea au fost recepţionate (după o durată de timp egală cu durata transmisiei de la la ), ele pot fi transmise apoi calculatorului . În mod evident, transmisiile între două perechi diferite de calculatoare se pot realiza în paralel. Durata de timp după care informaţiile ajung la toate calculatoarele este cel mai mare moment de timp la care un calculator primeşte informaţiile (considerând că procesul de transmitere a informaţiilor începe la momentul ).
Cerinţă
Determinaţi durata de timp minimă (corespunzătoare unei strategii inteligente de broadcast) după care informaţiile ajung la toate calculatoarele.
Date de intrare
Fişierul de intrare bcast.in
conţine pe prima linie numărul natural , reprezentând numărul de seturi de date de test. În continuare, urmează descrierea celor seturi. Prima linie din cadrul fiecărui set de test conţine numărul natural , reprezentând numărul de calculatoare. Următoarele linii conţin câte numere întregi, separate prin câte un spaţiu. Al -lea număr de pe a -a dintre aceste linii conţine durata de transmisie a informaţiilor de la calculatorul la calculatorul . Durata transmisiei de la un calculator la el însuşi va fi întotdeauna egală cu .
Date de ieșire
În fişierul bcast.out
veţi afişa linii, câte una pentru fiecare set de date de test. Pe linia va fi scris un număr natural reprezentând durata minimă după care informaţiile pot ajunge la toate calculatoarele pentru al -lea set de test din fişierul de intrare.
Restricții și precizări
- ;
- ;
- Durata de transmisie a informaţiilor de la un calculator la un calculator
Exemplu
bcast.in
2
4
0 4 2 1
4 0 16 13
7 8 0 9
10 11 3 0
2
0 0
10 0
bcast.out
5
0
Explicație
În cazul primului set de test, la momentul , calculatorul începe să trimită informaţiile calculatorului (transmisia durează până la momentul ). La momentul , calculatorul începe să transmită informaţiile calculatorului (transmisia durează până la momentul ), iar calculatorul începe să transmită informaţiile calculatorului (transmisia durează până la momentul ). Momentele de timp la care cele calculatoare află informaţiile sunt : , , şi .
În cazul celui de-al doilea set de test, la momentul calculatorul începe să transmită informaţiile calculatorului , iar transmisia se termină tot la momentul .