AcWing 3215. 网络延时
原题链接
中等
作者:
习学学
,
2021-02-19 11:01:55
,
所有人可见
,
阅读 442
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
int e[N] , ne[N] , h[N] , idx;
int n , m;
int max_len = 0;
void add(int a, int b){
e[idx] = b;
ne[idx] = h[a];
h[a] = idx;
idx++;
}
int dfs(int x)
{
int ret = 0;
for(int i = h[x] ; ~i ; i = ne[i])
{
int j = e[i];
int tmp = dfs(j);
max_len = max(max_len, tmp + ret);
ret = max(ret, tmp);
}
max_len = max(max_len , ret);
return ret + 1;
}
int main()
{
cin >> n >> m;
memset(h , -1 , sizeof h);
for(int i = 2 ; i <= n + m ; i++)
{
int j;
cin >> j;
add(j , i);
}
dfs(1);
cout << max_len << endl;
}
为什么这里return ret+1 ,这里的+1怎么来的?
返回上面需要加上自己的这条边,所以要+1
Python 过不了,只能上cpp