打死看不出哪里错了。。有人康嘛QAQ
查看原帖
打死看不出哪里错了。。有人康嘛QAQ
320290
Instudy楼主2020/10/20 23:35
#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
int n,m;
int f[maxn];
int p,q;
char opt;
int ans;
int Find(int x)
{
	if(f[x]==x) return x;
	return  f[x]=Find(f[x]);
}
void unionn(int x,int y)
{
	f[Find(y)]=Find(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')
		 unionn(p,q);
		else {
			int f1=p,f2=q;
			if(!f[f1])f[f1]=f2;
			 else unionn(f[f1],f2);
			if(!f[f2])f[f2]=f1;
			 else unionn(f[f2],f1);
		}
	}
	for(int i=1;i<=n;i++)
	 if(f[i]==i)ans++;
	cout<<ans; 
	return 0;
}
2020/10/20 23:35
加载中...