第11点错误,请求帮助!
查看原帖
第11点错误,请求帮助!
1343911
zaslow楼主2025/6/25 15:05
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
#include <bits/stdc++.h>
int n,m;
int findout(int *a,int x)
{
	if(a[x]==x)return x;
	a[x]=findout(a,a[x]);
	return a[x];
}
int num=0;
int main() {
	char a0;
	int a1,a2;
	cin>>n>>m;
	int a[2*n+1];
	for(int i=0;i<=2*n;i++)
	{
		a[i]=i;
	}
	for(int i=0;i<m;i++)
	{
		cin>>a0>>a1>>a2;
		if(a0=='F')
		{
			int t0=findout(a,a1);
			int t1=findout(a,a2);
			if(t0!=t1)
			{
				a[t1]=t0;//合并集合
			}			
		}else
		{
			int t0=findout(a,a1+n);
			int t1=findout(a,a2+n);//cout<<t0<<" "<<t1<<endl;
			int t3=findout(a,a1);
			int t4=findout(a,a2);
			a[t0]=t4;
			a[t1]=t3;
		}
	}
//	set<int>set0;
//	for(int i=1;i<=n;i++)
//	{
//		int t=findout(a,i);//cout<<i<<":"<<t<<endl;
//		set0.insert(t);
//	}
//	num=set0.size();
	for(int i=1;i<=n;i++)
	{
		if(findout(a,i)==i)num++;
	}
	cout<<num;
	return 0;
} 
/*
6
3
E 1 4
E 3 1
E 1 2
*/
2025/6/25 15:05
加载中...