并查集P1892团队求调
  • 板块灌水区
  • 楼主陌屿
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/6/23 19:37
  • 上次更新2023/10/27 22:45:00
查看原帖
并查集P1892团队求调
184837
陌屿楼主2022/6/23 19:37

MLE 20分

代码如下。

#include<stdio.h>
using namespace std;
int fa[1005],enm[1005];
int n,m,sum,x,y;
char P;
int find(int x){
 if(fa[x]==x) return x;
 else return fa[x]=find(fa[x]);
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		fa[i]=i;
	sum=n;
	for(int i=1;i<=m;i++){
		cin>>P;
		scanf("%d%d",&x,&y);
		if(P=='F'){
			int xx=find(x);
			int yy=find(y);
			if(xx!=yy){
				fa[xx]=yy;
				sum--;
			}
		}
		if(P=='E'){
			if(!enm[x]) enm[x]=find(y);
			else {fa[find(y)]=enm[x]; sum--;}
			if(!enm[y]) enm[y]=find(x);
			else {fa[find(x)]=enm[y]; sum--;}
		}
	}
	printf("%d",sum);
}
2022/6/23 19:37
加载中...