Codeforces 115A Party (并查集思维)

题意:

给你每个人的上级,并且一个人和他的所有上级都不能在一个party(小组)中(这点是根据题目给出的两点推导出来的),问最少需要几个party。

思路:

并查集,找一个集合中层级数最多的就是最少需要的party数量。

#include<bits/stdc++.h>
using namespace std;
int in[2010], a[2010];
int main() {
	//freopen("in.txt", "r", stdin);
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int n, maxx = 0; cin >> n;
	for (int i = 1; i <= n; ++i)cin >> a[i];
	for (int i = 1; i <= n; ++i)//利用并查集思想
		for (int j = i, k = 1; j != -1;j = a[j],k++)
			maxx = maxx > k ? maxx : k;
	cout << maxx << endl;
}
posted @ 2020-08-23 11:02  Koshkaaa  阅读(133)  评论(0编辑  收藏  举报