Pagini recente » Cod sursa (job #1741541) | Cod sursa (job #2586889) | Cod sursa (job #2778623) | Cod sursa (job #856252) | Cod sursa (job #155070)
Cod sursa(job #155070)
#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;
}