自己机上样例过了,但是洛谷却wa
查看原帖
自己机上样例过了,但是洛谷却wa
513009
lmjsjg楼主2022/2/1 09:40
#include<cstdio>
#include<cctype>
#include<iostream>

void read(int &x) {
	x = 0;
	register int y = 1;
	register char c = getchar();

	while( !isdigit(c) ) {
		if(c == '-') {
			y = -1;
		}
		c = getchar();
	}
	while( isdigit(c) ) {
		x = x * 10 + c - '0';
		c = getchar();
	}

	x *= y;
}

const int MAXN = 1005;

int ufs[MAXN * 2];

int find(int x) {
	if(ufs[x] == x) {
		return x; 
	}
	ufs[x] = find(ufs[x]);
	return ufs[x];
}

int main() {
	int n, m;
	
	read(n), read(m);
	for(int i = 1; i <= n * 2; ++i) {
		ufs[i] = i;
	}
	for(int i = 1; i <= m; ++i) {
		char opt = getchar();
		int p, q;
		read(p), read(q);
		if(opt == 'E') {
			ufs[find(p + n)] = find(q);
			ufs[find(q + n)] = find(p);
		} else {
			ufs[find(p)] = find(q); 
		}
	}
	
	int cnt = 0;
	for(int i = 1; i <= n; ++i) {
		if(ufs[i] == i) {
			++cnt;
		}
	}
	
	printf("%d\n", cnt);

	return 0;
}

自己机上测试样例输出结果是正确的,但是洛谷WA

2022/2/1 09:40
加载中...