Pagini recente » Cod sursa (job #1714279) | Cod sursa (job #2014296) | Cod sursa (job #1078631) | Cod sursa (job #481880) | Cod sursa (job #154782)
Cod sursa(job #154782)
#include<fstream>
using namespace std;
struct lista{
int val;
lista* urm;
};
int tmin[10000], t, n;
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;
}
int sortare(int m){
int ok=1,p=m,maxi=0;
while(ok){
ok=0;
p--;
for(int i=0;i<p;i++)
if(tmin[i]<tmin[i+1]){
int aux=tmin[i];
tmin[i]=tmin[i+1];
tmin[i+1]=aux;
ok=0;
}
if(maxi<tmin[p]+p+1) maxi=tmin[p]+p+1;
}
for(int i=0;i<=p;i++)
if(maxi<tmin[i]+i+1) maxi=tmin[i]+i+1;
return maxi;
}
int minimizare(int i){
if(li[i]==NULL) return 0;
int m=0,timp[400];
lista *q=li[i];
while(q){
tmin[m++]=minimizare(q->val);
q=q->urm;
}
return sortare(m);
}
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);
}
g<<minimizare(1)<<endl;
for(i=1;i<=n;i++)
li[i]=NULL;
}
f.close();
}
int main(){
citire();
g.close();
return 0;
}