思路

大法师 DFS 裸题。用二维数组存储二叉树,ti,0t_{i,0} 存储左儿子,ti,1t_{i,1} 存储右儿子,dd 代表深度,也就是 Bessie 走了多少条小径。

代码

#include <iostream>
#include <vector>

using namespace std;

int n, s, t[1001][2]
void dfs(int u, int d){
	if (!u){ // 如果是草地则结束搜索并更新全局最大值
		s = max(s, d);
		return;	
	}
	dfs(t[u][0], d + 1); // 搜索左儿子
	dfs(t[u][1], d + 1); // 搜索右儿子
}
int main(){
	cin >> n;
	for (int i = 1;i < n;i ++) cin >> s, cin >> t[s][0] >> t[s][1]; // 输入编号并存图
	s = 0; // 节省一个变量……
	dfs(1, 0); // 一开始是在 1 号节点,走了 0 条小径
	cout << s;
}