Cod sursa(job #155070)

Utilizator dragosmihaiDragos Oana dragosmihai Data 11 martie 2008 18:22:20
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
using namespace std;
struct lista{
	int val;
	lista* urm;
};
int tmin[10000], t, n,maxi,timp[1000];
lista *li[10000];
ofstream g("zvon.out");


void adaugare(int a, int b){
 lista *q=new lista;
 q->val=b;
 q->urm=li[a];
 li[a]=q;
}



void minimizare(int i){
int m=0;
for(lista*q=li[i];q;q=q->urm){
    minimizare(q->val);
    timp[m++]=tmin[q-<val];    	
}
int ok=1;p=m,maxi=0;
tmin[i]=0;
while(ok){
ok=0;
p--;
for(int i=0;i<p;i++)
   if(timp[i]<timp[i+1]){
		         ok=1;
			 int aux=timp[i];
			  timp[i]=timp[i+1];
			  timp[i+1]=aux;
                        }
   if(maxi<timp[p]+p+1) maxi=timp[p]+p+1;
}
for(int i=0;i<=p;i++)
      if(maxi<timp[i]+i+1) maxi=timp[i]+i+1;
}



void citire(){
ifstream f("zvon.in");
f>>t;
for(;t;t--){
   f>>n;
   int i;
   for(i=1;i<n;i++){
	 int a,b;
	 f>>a>>b;
	 adaugare(a,b);
   }
 minimizare(1);
 g<<maxi<<endl;
 for(i=1;i<=n;i++){
  li[i]=NULL;
  delete li[i];
  } 
}
f.close();
}

int main(){
citire();
g.close();
return 0;
}