0
点赞
收藏
分享

微信扫一扫

Codeforces Beta Round #87 (Div. 2) / 116C Party (DFS&树的最大深度)


http://codeforces.com/problemset/problem/116/C


从树根DFS,看最大能递归几层。

/*30ms,300KB*/

#include<bits/stdc++.h>
using namespace std;
const int mx = 2005;

vector<int> v[mx];
bool fa[mx];
int maxlen;

void dfs(int i, int deep)
{
	maxlen = max(maxlen, deep);
	for (int j = 0; j < v[i].size(); ++j)
		dfs(v[i][j], deep + 1);
}

int main()
{
	memset(fa, 1, sizeof(fa));
	int n, x;
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		cin >> x;
		if (x != -1)
		{
			v[x].push_back(i);
			fa[i] = false;
		}
	}
	for (int i = 1; i <= n; ++i)
		if (fa[i]) dfs(i, 1);
	printf("%d\n", maxlen);
	return 0;
}


举报

相关推荐

0 条评论