Pagini recente » Cod sursa (job #722857) | Cod sursa (job #1247888) | Cod sursa (job #805628) | Cod sursa (job #626639) | Cod sursa (job #106583)
Cod sursa(job #106583)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
const int N = 100000;
int n;
vector<int> v[N];
int dim[N],d[N];
bool dcmp ( const int& a, const int& b ) { return (dim[a] > dim[b]); }
void df ( int k ) {
dim[k] = 1;
for (int i = 0; i<v[k].size(); ++i) {
df(v[k][i]);
dim[k] += dim[v[k][i]];
}
}
void bf() {
queue<int> q;
int cur = 0;
q.push(cur); d[cur] = 0;
while (!q.empty()) {
cur = q.front(); q.pop();
for (int i = 0; i < v[cur].size(); ++i) {
d[v[cur][i]] = d[cur] + i + 1;
q.push(v[cur][i]);
}
}
}
int main() {
freopen("zvon.in","rt",stdin);
freopen("zvon.out","wt",stdout);
int t;
for (scanf("%d",&t); t > 0; --t) {
scanf("%d",&n);
for (int i = 0; i<N; ++i) {
v[i].clear();
d[i] = 0;
}
for (int i = 0; i < n-1; ++i) {
int a,b;
scanf("%d %d",&a,&b);
--a; --b;
v[a].push_back(b);
}
df(0);
for (int i = 0; i<n; ++i) sort(v[i].begin(), v[i].end(), dcmp);
bf();
int max = 0;
for (int i = 0; i<n; ++i)
if (d[i] > max) max = d[i];
printf("%d\n",max);
}
return 0;
}