P1357 食物链(一)

673 阅读1分钟

image.png

image.png

image.png

image.png

题目要求:

image.png

这题和滑雪的异曲同工,都是进行深搜,搜索过的值进行结点存储

利用图的数据结构

关键代码:

for(int i = 1; i <= n; i++) {
        dis = max(dis, dfs(i));
    }
int dfs(int x) {
	if (a[x] != 0)
		return a[x];
	a[x]=1;

	for(int i = 1; i <= m; i++) {
		if(r[i][0] == x) {
			a[x] = max(dfs(r[i][1]) + 1, a[x]);
		}
	}
	return a[x];
}

这题有两个点没注意到:

(1)dis重新多组输入的时候没有重新赋0

(2)数组下标题目说的是不超过1000,然后我一开始设置的a[1000],然后Wrong Answer了,改成a[1001]对了......