Pagini recente » Cod sursa (job #2533858) | Cod sursa (job #2076761) | Cod sursa (job #2961320) | Cod sursa (job #1468595) | Cod sursa (job #788001)
Cod sursa(job #788001)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
FILE *f = fopen("zvon.in","r");
FILE *g = fopen("zvon.out","w");
typedef vector<int>::iterator it;
#define MaxN 100100
int N,T;
int Best[MaxN],aux[MaxN];
vector<int> A[MaxN];
void citire(void)
{
int a,b;
fscanf(f,"%d ",&N);
for(int i=1;i<N;i++)
{
fscanf(f,"%d %d",&a,&b);
A[a].push_back(b);
}
}
inline int max(int a,int b)
{
return a > b ? a : b;
}
inline void DP(int a)
{
int j = 0;
for(it i=A[a].begin();i<A[a].end();i++)
DP(*i);
for(it i=A[a].begin();i<A[a].end();i++,j++)
aux[j] = Best[*i];
sort(aux+1,aux+A[a].size()+1);
for(int i=A[a].size();i;i--)
Best[a] = max(Best[a],aux[i]+A[a].size()-i+1);
}
inline void Dispose(void)
{
for(int i=1;i<=N;i++)
{
A[i].clear();
Best[i] = 0;
}
}
int main()
{
fscanf(f,"%d\n",&T);
for(int i=1;i<=T;i++)
{
citire();
DP(1);
fprintf(g,"%d\n",Best[1]);
Dispose();
}
}