90分求助
查看原帖
90分求助
484665
wyzy楼主2022/7/11 16:13
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y,f[1028],e[1028];
char opt;
int find(int x){
	if(f[x]==x) return x;
	return f[x]=find(f[x]);
}
void merge(int x,int y){
	if(find(x)==find(y)) return;
	f[find(x)]=find(y);
	return ;
}
int main(){
	cin >> n >> m;
	for(int i=1;i<=n;i++){
		f[i]=i;
	}
	for(int i=1;i<=m;i++){
		cin >> opt >> x >> y;
		if(opt=='F'){
			merge(x,y);
		}
		else{
			if(e[x]==0) e[x]=find(y);
			else merge(e[x],y); 
		}
	}
	int cnt=0;
	for(int i=1;i<=n;i++) if(f[i]==i) cnt++;
	cout << cnt;
	return 0;
}
2022/7/11 16:13
加载中...