Pagini recente » Cod sursa (job #103507) | Cod sursa (job #355493) | Cod sursa (job #567489) | Cod sursa (job #1310163) | Cod sursa (job #1805422)
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
vector <int> child[100005];
int parent[100005];
int dp[100005];
queue <int> s;
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;
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;
}
for(i = 1;i <= n;i++){
if(child[i].empty() == true){
s.push(i);
}
}
while(s.empty() == false){
int node = s.front();
s.pop();
sort(child[node].begin(), child[node].end(), comp);
int mx;
i = 1;
mx = 0;
for(auto it : child[node]){
mx = max(mx, dp[it] + i);
i++;
}
dp[node] = mx;
if(node != 1){
s.push(parent[node]);
}
}
printf("%d\n", dp[1]);
for(i = 1;i <= n;i++){
child[i].clear();
dp[i] = 0;
}
}
return 0;
}