Pagini recente » Cod sursa (job #465747) | Cod sursa (job #1575403) | Cod sursa (job #1935046) | Rating Burada Andrei (buradaandrei) | Cod sursa (job #102906)
Cod sursa(job #102906)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#define Nmax 100001
using namespace std;
int t;
long n, i, Rez, nrd;
vector < long > gr[Nmax];
vector < long > d[Nmax];
void readNext();
void stergeVect();
long rez(long);
inline long max(long x, long y) { return x>y?x:y; }
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
scanf("%d\n", &t);
for (int I=1; I<=t; I++)
{
readNext();
Rez=rez(1);
printf("%ld\n", Rez);
stergeVect();
}
fclose(stdin);
fclose(stdout);
return 0;
}
void readNext()
{
long x, y;
scanf("%ld\n", &n);
for (i=1; i<n; i++)
{
scanf("%ld %ld\n", &x, &y);
gr[x].push_back(y);
}
}
void stergeVect()
{
for (i=1; i<=n; i++)
gr[i].erase(gr[i].begin(), gr[i].end());
}
long rez(long x)
{
long temp=0, maxim=0, i;
if (!gr[x].size()) return 0;
else
{
nrd++;
temp=gr[x].size();
for (i=0; i<temp; i++)
d[nrd].push_back(rez(gr[x][i]));
sort(d[nrd].begin(),d[nrd].end());
temp=d[nrd].size();
for (i=1; i<=temp; i++)
maxim=max(maxim,d[nrd][i-1]+temp-i+1);
d[nrd].erase(d[nrd].begin(),d[nrd].end());
nrd--;
return maxim;
}
}