Copșa Mică

Time limit: 0.25s Memory limit: 128MB Input: copsamica.in Output: copsamica.out

După experiențele nefericite avute anul trecut în Las Vegas, Charles a decis să nu mai joace vreodată Blackjack și să-și spele păcatele lucrând la curățarea orașului Copșa Mică, până de curând cel mai poluat oraș din Europa. El va începe prin a curăța instalațiile de producere a negrului de fum (sursa principală a poluării din oraș).

O astfel de rețea este formată din NN cazane unite între ele prin NN conducte, astfel încât fiecare cazan este unit prin conducte de exact două alte cazane, și se poate ajunge de la un cazan la oricare altul urmând conductele (există exact două moduri de a ajunge de la un cazan la oricare altul). Cu alte cuvinte, rețeaua are forma unui ciclu simplu. Prin fiecare conductă i,(1iN)i, (1 \leq i \leq N) care unește cazanele aia_i și bib_i poate trece un debit maxim di de apă. Un drum de la un cazan xx la un alt cazan yy este format dintr-o serie conducte adiacente pentru care prima conductă din serie are un capăt în xx, iar ultima conductă din serie are un capăt în yy.

Din păcate, Charles nu cunoaște tripletele de valori (ai,bi,di)(a_i, b_i, d_i) care definesc conductele rețelei, dar a putut să afle pentru fiecare pereche de cazane (x,y)(x, y) care este debitul maxim dmaxx,ydmax_{x,y} de apă care poate circula de la cazanul xx la cazanul yy. Astfel, spunem că o rețea produce matricea dmaxx,ydmax_{x,y} dacă dmaxx,ydmax_{x,y} este egal cu:

  • 0 0, dacă x=yx = y.
  • suma debitelor minime aflate pe fiecare din cele două drumuri care unesc cazanele xx și yy. Mai exact, dacă un drum de la xx la yy trece prin conductele (t1,t2,...,tk)(t_1, t_2, ..., t_k) iar celalalt trece prin conductele (w1,w2,...wnk)(w_1, w_2, ... w_{n-k}), dmaxx,y=min(dt1,dt2,...dtk)+min(dw1,dw2,...dw(nk))dmax_{x,y} = min(d_{t_1}, d_{t_2}, ... d_{t_k}) + min(d_{w_1}, d_{w_2}, ... d_{w_(n-k)}).

Cerinţă

Dându-se NN și matricea dmaxx,ydmax_{x,y}, să se reconstituie o rețea formată din NN cazane și NN muchii definite prin tripletele de valori (ai,bi,di)(a_i, b_i, d_i) care produce matricea dmaxx,ydmax_{x,y}.

Date de intrare

Fişierul de intrare copsamica.in va conține pe prima linie un număr natural TT, semnificând numărul de rețele din fișierul de intrare. Pe liniile următoare se vor afla descrierile celor TT rețele. O astfel de descriere va conține pe prima linie numărul natural NN. Urmează N1N-1 linii, pe linia xx aflându-se câte NxN-x numere naturale separate prin câte un spațiu: al yy-lea număr este egal cu valoarea dmaxx,x+ydmax_{x,x + y}.

Date de ieşire

În fişierul de ieşire copsamica.out veți afișa cele TT răspunsuri aferente celor TT rețele. Răspunsul aferent unei perechi (N,dmaxx,y)(N,dmax_{x,y}) este format din NN linii conținând trei numere naturale ai,bia_i, b_i și did_i, reprezentând descrierile celor NN muchii ce compun o rețea care produce matricea dmaxx,ydmax_{x,y}.

Restricţii si precizări

  • T=5 T = 5;
  • 3N1 000 3 \leq N \leq 1 \ 000;
  • Pentru 6060% din teste N500N \leq 500;
  • 1dmaxx,y20 000 1 \leq dmax_{x,y} \leq 20 \ 000;
  • dmaxx,y=dmaxy,xdmax_{x,y} = dmax_{y,x}
  • Valorile debitelor did_i afișate trebuie să fie numere naturale 20 000\leq 20 \ 000.
  • Cazanele sunt numerotate de la 11.
  • Exista cel puțin o soluție. În cazul în care există mai multe, puteți afișa oricare dintre ele.

Exemplu

copsamica.in

1
4
2 2 2
3 3
3

copsamica.out

1 3 1
3 2 2
2 4 2
1 4 1

Explicație

Pentru prima pereche (N,dmaxx,y)(N,dmax_{x,y}), putem construi rețeaua circulară formată din muchiile
a1=1,b1=3,d1=1a_1 = 1, b_1 = 3, d_1 = 1
a2=3,b2=2,d2=2a_2 = 3, b_2 = 2, d_2 = 2
a3=2,b3=4,d3=2a_3 = 2, b_3 = 4, d_3 = 2
a4=1,b4=4,d4=1a_4 = 1, b_4 = 4, d_4 = 1
Această rețea produce matricea dmaxx,ydmax_{x,y}.
Spre exemplu, dmax1,3=min(d1)+min(d2,d3,d4)=1+1=2dmax_{1,3} = min(d_1) + min(d_2, d_3, d_4) = 1+1 = 2. dmax2,4=min(d2,d3)+min(d1,d4)=2+1=3dmax_{2,4} = min(d_2, d_3) + min(d_1, d_4) = 2+1 = 3.

Log in or sign up to be able to send submissions!