40分,怎么改
  • 板块灌水区
  • 楼主xiaohaowen
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/8/8 08:25
  • 上次更新2024/8/8 09:35:04
查看原帖
40分,怎么改
1088913
xiaohaowen楼主2024/8/8 08:25

P1892

#include <bits/stdc++.h>
using namespace std;
int fa[2001],diren[2001],cnt;
int find(int x){
	int r=x;
	while(fa[r]!=r){
		r=fa[r];
	}
	while(x!=r){
		int t=x;
		x=fa[x];
		fa[t]=r;
	}
	return r;
}

void join(int a,int b){
	if(a!=b){
		cnt--;
		fa[b]=a;
	}return; 
}

int main(){
	int n,m;
	cin>>n>>m;
	cnt=n;
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}for(int i=1;i<=m;i++){
		char op;
		int x,y;
		cin>>op>>x>>y;
		int fx=find(x);
		int fy=find(y);
		if(op=='E'){
			if(diren[fx]==0){
				diren[fx]=fy;
			}else{
				join(find(diren[x]),fy);
			}
			if(diren[fy]==0){
				diren[fy]=fx;
			}else{
				join(find(diren[y]),fx);
			}
		}else if(op=='F'){
			join(fx,fy);
		}
	}cout<<cnt;
	return 0;
}

违规紫衫

2024/8/8 08:25
加载中...