Pagini recente » Cod sursa (job #1454784) | Cod sursa (job #2224980) | Cod sursa (job #1077974) | Cod sursa (job #1996189) | Cod sursa (job #193608)
Cod sursa(job #193608)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <utility>
#include <functional>
using namespace std;
#define pb push_back
#define mp make_pair
#define all(c) (c).begin(),(c).end()
vector<vector<int> > a(100005);
int t[100005],trecut[100005];
inline int maxc(int x,int y) { return x>y?x:y;}
bool comp(const int &x,const int &y)
{
return x>=y?1:0;
}
void dfs(int x)
{
vector<int> aux;
trecut[x]=1;
for (vector<int>::iterator it=a[x].begin();it!=a[x].end();it++)
if(!trecut[*it])
{
dfs(*it);
aux.pb(t[*it]);
}
sort(all(aux),comp);
for (vector<int>::iterator it=aux.begin();it!=aux.end();it++)
{
t[x]=maxc(t[x],*it+it-aux.begin()+1);
// printf("%d\n",
}
}
int main()
{
FILE *in,*out;
int n,T,i,x,y;
in=fopen("zvon.in","r");
out=fopen("zvon.out","w");
fscanf(in,"%d",&T);
for (;T;T--)
{
for (i=1;i<=n;i++)
a[i].erase(all(a[i]));
fscanf(in,"%d",&n);
for (i=1;i<=n-1;i++)
{
fscanf(in,"%d%d",&x,&y);
a[x].pb(y);
}
fill(t,t+n+3,0);
fill(trecut,trecut+n+3,0);
dfs(1);
fprintf(out,"%d\n",t[1]);
}
fclose(in);
fclose(out);
return 0;
}