Pagini recente » Cod sursa (job #983354) | Cod sursa (job #754204) | Cod sursa (job #754926) | Cod sursa (job #2204900) | Cod sursa (job #1805426)
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
vector <int> child[100005];
int parent[100005];
int dp[100005];
int q[100005];
bool comp(int a, int b){
return dp[a] > dp[b];
}
int main(){
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
int T,test,i,n,j,x,y,b,e,mx,node;
scanf("%d", &T);
for(test = 1;test <= T;test++){
scanf("%d", &n);
for(i = 1;i < n;i++){
scanf("%d %d", &x, &y);
child[x].push_back(y);
parent[y] = x;
}
b = 1;
e = 0;
for(i = 1;i <= n;i++){
if(child[i].empty() == true){
q[++e] = i;
}
}
while(b <= e){
node = q[b++];
sort(child[node].begin(), child[node].end(), comp);
i = 1;
mx = 0;
for(auto it : child[node]){
mx = max(mx, dp[it] + i);
i++;
}
dp[node] = mx;
if(node != 1){
q[++e] = parent[node];
}
}
printf("%d\n", dp[1]);
for(i = 1;i <= n;i++){
child[i].clear();
dp[i] = 0;
}
}
return 0;
}