子结点深度 = 父结点深度 + 1
#include <bits/stdc++.h>
using namespace std;
int n;
int d[1000005];
int ans = 1;
int main(void) {
scanf("%d", &n);
d[1] = 1;
for (int i = 1; i <= n; i++) {
int x, y;
scanf("%d%d", &x, &y);
if(x) d[x] = d[i] + 1;
if(y) d[y] = d[i] + 1;
ans = max(ans, max(d[x], d[y]));
}
printf("%d", ans);
return 0;
}
似乎是没有问题的,但是有一个点WA了。
果然这题怎么可能这么简单。(不过按照常规的dfs遍历的确挺简单)