Project Management

Time limit: 0.02s Memory limit: 16MB Input: pm.in Output: pm.out

La o firmă de software se lucrează la un mare proiect. Proiectul constă în executarea a nn (nNn \in \N) faze de dezvoltare, numerotate cu numerele 1,2,...,n1, 2, ..., n. Unele faze pot fi executate în paralel (în acelaşi timp), însă executarea altor faze nu poate fi începută până când nu se finalizează executarea anumitor faze.

Cerinţă

Să se scrie un program care să se determine:
a) timpul minim tt în care se poate finaliza executarea proiectului
b) pentru fiecare fază kk (k{1,2,...,n}k \in \{1, 2, ..., n\}), momentul de timp ckc_k la care poate începe faza kk cel mai devreme, respectiv momentul de timp dkd_k la care poate începe faza kk cel mai târziu, fără a influenţa durata totală de executare a proiectului.

Date de intrare

Fişierul de intrare pm.in conţine:

  • pe prima linie, un număr natural nn, reprezentând numărul fazelor proiectului
  • pe a doua linie, nn numere naturale, separate prin câte un spaţiu, reprezentând timpul necesar finalizării fiecărei faze
  • pe fiecare linie kk dintre următoarele nn linii, un număr natural mkm_k şi un şir aa format din mkm_k numere naturale: a1,a2,...,amka_1, a_2, ..., a_{m_k}, cele mk+1m_{k+1} numere din linie fiind separate prin câte un spaţiu, mkm_k reprezentând numărul de faze ce trebuie finalizate înaintea începerii fazei kk, iar numerele din şirul aa reprezentând numerele de ordine ale fazelor ce trebuie finalizate înaintea începerii fazei kk.

Date de ieşire

Fişierul de ieşire pm.out va conţine n+1n + 1 linii. Pe prima linie se va scrie numărul natural tt, iar pe fiecare linie kk dintre următoarele nn linii, se vor scrie cele două numere naturale ckc_k şi dkd_k, separate prin câte un spaţiu.

Restricţii şi precizări

  • 0n1000 ≤ n ≤ 100; nNn \in \N
  • Timpul necesar finalizării executării oricărei faze nu va depăşi 1 000 0001\ 000\ 000
  • Se consideră că executarea proiectului începe la momentul de timp 00
  • Nu vor exista dependenţe circulare (proiectul întotdeauna se poate finaliza)
  • Pentru rezolvarea cerinţei a) se acordă 4040% din punctaj, iar pentru cerinţa b) 3030% pentru prima valoare respectiv 3030% din punctaj pentru a doua valoare.

Exemplu

pm.in

7
2 3 5 3 3 3 2
0
0
1 2
1 1
1 1
3 3 4 5
1 3

pm.out

11
0 3
0 0
3 3 
2 5
2 5
8 8
8 9

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