Pagini recente » Cod sursa (job #2013810) | Cod sursa (job #2237869) | Cod sursa (job #1338044) | Cod sursa (job #324639) | Cod sursa (job #102887)
Cod sursa(job #102887)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#define Nmax 100001
using namespace std;
int t;
long n, i, Rez;
vector < long > gr[Nmax];
void readNext();
void stergeVect();
long rez(long);
inline long max(long x, long y) { return x>y?x:y; }
long divide(long,long);
void qSort(long,long);
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;
vector < long > d;
if (!gr[x].size()) return 0;
else
{
for (i=0; i<gr[x].size(); i++)
d.push_back(rez(gr[x][i]));
sort(d.begin(),d.end());
temp=d.size();
for (i=1; i<=temp; i++)
maxim=max(maxim,d[i-1]+temp-i+1);
d.erase(d.begin(),d.end());
return maxim;
}
}