Pagini recente » Borderou de evaluare (job #2603649) | Borderou de evaluare (job #1555193) | Cod sursa (job #211005) | Cod sursa (job #736722) | Cod sursa (job #211432)
Cod sursa(job #211432)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<long> li[100002];
long tmin[100002];
int T;
long N;
/*
void adaug(long a,long b)
{
nod *q=new nod;
q->nr=b;
q->urm=li[a];
li[a]=q;
}
*/
long timp_minim(long x)
{
if(li[x].empty())
{
tmin[x]=0;
return 0;
}
vector<long> timp;
vector<long>::iterator it;
for(it=li[x].begin();it!=li[x].end();it++)
timp.push_back(timp_minim(*it));
sort(timp.rbegin(),timp.rend());
int max=-1,i=1;;
for(it=timp.begin();it!=timp.end();it++)
{
if(*it+i>max)
max=*it+i;
i++;
}
tmin[x]=max;
return max;
}
void citire()
{
ifstream f("zvon.in");
ofstream g("zvon.out");
f>>T;
for(int i=0;i<T;i++)
{
f>>N;
for(long j=0;j<N-1;j++)
{
long a,b;
f>>a>>b;
li[a].push_back(b);
// adaug(a,b);
}
timp_minim(1);
g<<tmin[1]<<endl;
for(int i=0;i<=N;i++)
li[i].clear();
}
f.close();
g.close();
}
int main()
{
citire();
return 0;
}