社区讨论

80pts求调,#4#7

P1892[BalticOI 2003] 团伙参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo858v2b
此快照首次捕获于
2023/10/27 12:59
2 年前
此快照最后确认于
2023/10/27 12:59
2 年前
查看原帖
蒟蒻用了unordered_map,但是没过
CPP
#include<iostream>
#include<unordered_map>
using namespace std;
const int N = 1010;
int n, m, p, q, parent[N], ans;
bool res[N];
char flag;
unordered_map<int, int> box;
int find(int x) {
	if (parent[x] != x) parent[x] = find(parent[x]);
	return parent[x];
}
void merge(int a, int b) {
	parent[find(a)] = find(b);
}
int main(void) {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i) parent[i] = i;	
	for (int i = 0; i < m; ++i) {
		cin >> flag >> p >> q;
		if (flag == 'F') merge(p, q);
		else {
			box[p] = q;
			box[q] = p;
		}
	}
	for (int i = 1; i <= n; ++i) {
		auto itr = box.find(i);
		if (itr == box.end()) continue;
		int mid = box[i];
		itr = box.find(mid);
		if (itr == box.end()) continue;
		int f = box[mid];
		merge(i, f);
	}
	for (int i = 1; i <= n; ++i) {
		find(i);
		res[parent[i]] = true;
	}
	for (int i = 1; i <= n; ++i) {
		if (res[i]) ++ans;
	}
	cout << ans;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...