Master

大师  •  19天前


include

include

include <omp.h>

using namespace std;

int fa[1005];

void Build(int n) {

#pragma omp parallel for
for (int i = 1; i <= n; i++) {
	fa[i] = i;
}

}

int find(int x) {

if (fa[x] != x) {
	fa[x] = find(fa[x]);
}
return fa[x];

}

void merge(int x, int y) {

int rootX = find(x);
int rootY = find(y);
if (rootX != rootY) {
	fa[rootX] = rootY;
}

}

int main() {

int t;
cin >> t;
while (t--) {
	int n, m;
	cin >> n >> m;
	Build(n);

	#pragma omp parallel for
	for (int i = 0; i < m; i++) {
		int a, b;
		cin >> a >> b;
		merge(a, b);
	}

	int ans = 0;
	#pragma omp parallel for reduction(+:ans)
	for (int i = 1; i <= n; i++) {
		if (fa[i] == i) {
			ans++;
		}
	}

	cout << ans << endl;
}
return 0;

}


评论:

请先登录,才能进行评论