Pagini recente » Cod sursa (job #1173390) | Cod sursa (job #3172387) | Cod sursa (job #389890) | Cod sursa (job #554758) | Cod sursa (job #929545)
Cod sursa(job #929545)
#include<cstdio>
#include<vector>
#include<queue>
#include<utility>
#include<algorithm>
#define NMAX 100005
FILE *f=fopen("zvon.in","r");
FILE *g=fopen("zvon.out","w");
using namespace std;
vector<int> G[NMAX];
int test,n,DP[NMAX];
inline int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
bool cmp(int i,int j)
{
return DP[i]>DP[j];
}
void read( void )
{
fscanf(f,"%d",&n);
for(size_t i(1); i < n ; ++i )
{
int x,y;
fscanf(f,"%d%d",&x,&y);
G[x].push_back(y);
}
}
void DFS(int node)
{
for(int i(0) ; i < G[node].size(); ++i)
DFS(G[node][i]);
sort(G[node].begin(),G[node].end(),cmp);
for(int i(0) ; i < G[node].size() ; ++i )
DP[node]=max(DP[node],DP[G[node][i]]+i+1);
}
void erase( void )
{
for(int i(1) ; i <=n ;++i )
{
DP[i]=0;
G[i].clear();
}
n=0;
}
int main( void )
{
fscanf(f,"%d",&test);
while(test)
{
read();
DFS(1);
fprintf(g,"%d\n",DP[1]);
erase();
--test;
}
fclose(f);
fclose(g);
}