Pagini recente » Cod sursa (job #432820) | Cod sursa (job #851944) | Cod sursa (job #1685324) | Cod sursa (job #1581946) | Cod sursa (job #204051)
Cod sursa(job #204051)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct nod{int inf;nod *urm;} *v[100011];
int N,T,t,n,i,a,b,s[100011],nr[100011];
int cmp(int a,int b){
return nr[a]>nr[b];
}
void parc(int x){
nod *q;
for(q=v[x];q!=NULL;q=q->urm){
parc(q->inf);
}
nod *t;
N=0;
for(q=v[x];q!=NULL;q=q->urm){
N++;
s[N]=q->inf;
}
if(v[x]!=NULL) sort(s+1,s+1+N,cmp);
for(i=1;i<=N;i++){
if(nr[x]<i+nr[s[i]])
nr[x]=i+nr[s[i]];
}
}
int main(){
FILE *f=fopen("zvon.in","r");
FILE *g=fopen("zvon.out","w");
fscanf(f,"%d",&T);
for(t=1;t<=T;t++){
fscanf(f,"%d",&n);
for(i=1;i<n;i++){
fscanf(f,"%d %d",&a,&b);
nod *q= new nod;
q->inf=b;
q->urm=v[a];
v[a]=q;
}
parc(1);
fprintf(g,"%d\n",nr[1]);
for(i=1;i<=n;i++){
nr[i]=0;
v[i]=NULL;
}
}
fclose(f);
fclose(g);
return 0;
}