求助!急
查看原帖
求助!急
906970
Jerry_Money楼主2024/8/3 14:38
#include<bits/stdc++.h>
using namespace std;
int n,m;
int p,q;
char opt;
int f[100086];
int e[1000086];
int find(int x){
	return x==f[x]?x:f[x]=find(f[x]);
}
void add(int x,int y){
	x=find(x),y=find(y);
	f[y]=x;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		f[i]=i;
	}
	for(int i=1;i<=m;i++){
		cin>>opt>>p>>q;
		if(opt=='F'){
			p=find(p);
			q=find(q);
			if(p!=q)f[q]=p;
		}
		else{
			if(e[p]==0)e[p]=find(q);
			else add(e[p],q);
			if(e[q]==0)e[q]=find(p);
			else add[e[q],p];
		}
	}
	int s=0;
	bool sf[100086]={0};
	for(int i=1;i<=n;i++)sf[find(i)]=1;
	for(int i=1;i<=n;i++)s+=sf[i];
	cout<<s;
}
2024/8/3 14:38
加载中...