Pagini recente » Cod sursa (job #2045972) | Cod sursa (job #2826445) | Cod sursa (job #2120156) | Cod sursa (job #1885145) | Cod sursa (job #1336301)
#include <algorithm>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("zvon.in");
ofstream fout("zvon.out");
const int nmax= 100000;
int f[nmax+1], d[nmax+1], s[nmax+1], aux[nmax+1];
vector <int> v[nmax+1];
int main( ) {
int t;
fin>>t;
for ( int cnt= 1; cnt<=t; ++cnt ) {
int n;
fin>>n;
for ( int i= 1; i<=n; ++i ) {
v[i].clear();
f[i]= d[i]= 0;
}
for ( int i= 1; i<=n-1; ++i ) {
int x, y;
fin>>x>>y;
v[x].push_back(y);
f[y]= x;
}
queue <int> q;
for ( int i= 1; i<=n; ++i ) {
s[i]= (int)v[i].size();
if ( s[i]==0 ) q.push(i);
}
for ( ; !q.empty(); q.pop() ) {
int x= q.front();
--s[f[x]];
if ( s[f[x]]==0 ) {
q.push(f[x]);
for ( int j= 0; j<(int)v[f[x]].size(); ++j ) {
aux[j]= d[v[f[x]][j]];
}
sort(aux, aux+(int)v[f[x]].size());
for ( int j= 0; j<(int)v[f[x]].size(); ++j ) {
d[f[x]]= max(d[f[x]], aux[j]+(int)v[f[x]].size()-j);
}
}
}
fout<<d[1]<<"\n";
}
return 0;
}