蒟蒻求助
查看原帖
蒟蒻求助
931707
017_007楼主2023/6/28 12:22

样例在本地测的话是对的,但是放在洛谷IDE上面测就是错的,求知道的大佬指点亿下下

#include<bits/stdc++.h>

using namespace std;

inline int read(){
	   int x=0,f=1;char s=getchar();
	   while (s>'9'||s<'0'){
			 if (s=='-') f=-f;
			 s=getchar();
	   }
	   while (s>='0'&&s<='9'){
			 x=x*10+s-'0';
			 s=getchar();
	   }
	   return x*f;
}

const int N = 1e4;

int n,m,x,y,fa[N+10],en[N+10],ans;
char op;

int get(int x) {
	if (fa[x]==x) return x;
	else return fa[x]=get(fa[x]);
}

void marge(int x,int y) {
	x=get(x);y=get(y);
	fa[x]=y;
}

int main(){
	n=read();m=read();
	for (int i=1;i<=n*2;++i) fa[i]=i;
	for (int i=1;i<=m;++i) {
		op=getchar();
		x=read();y=read();
		if (op=='F') marge(x,y);
		else {
			if (!en[x]) en[x]=get(y);
			else marge(en[x],y);
			if (!en[y]) en[y]=get(x);
			else marge(en[y],x);
		}
	}
	for (int i=1;i<=n;++i) {
		fa[i]=get(i);
		if (fa[i]==i) ans++;
	}
	printf("%d",ans);
	return 0;
}

2023/6/28 12:22
加载中...