70pts求调(错第2、4、7个点)悬1关
查看原帖
70pts求调(错第2、4、7个点)悬1关
1283879
Lvan_wyw楼主2024/7/18 13:07
#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,n,fa[5000010],cnt;
struct aaa
{
	int x,y;
	char z;
}a[5000010];
int find(int x)
{
	int r=x;
	while(r!=fa[r])
	{
		r=fa[r];
	}
	int t;
	while(x!=fa[x])
	{
		t=x;
		x=fa[x];
		fa[t]=r;
	}
	return fa[x];
}
void join(int a,int b)
{
	if(find(a)!=find(b))
	{
		fa[find(a)]=find(b);
	}
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		cin>>a[i].z>>a[i].x>>a[i].y;
		if(a[i].z=='F')
		{
			join(a[i].x,a[i].y);
		}
		else
		{
			for(int j=1;j<=n;j++)
			{
				if((a[j].z=='E')&&(a[i].x==a[j].x))
				{
					join(a[i].y,a[j].y);
				}
				if((a[j].z=='E')&&(a[i].y==a[j].x))
				{
					join(a[i].x,a[j].y);
				}
				if((a[j].z=='E')&&(a[i].x==a[j].y))
				{
					join(a[i].y,a[j].x);
				}
				if((a[j].z=='E')&&(a[i].y==a[j].y))
				{
					join(a[i].x,a[j].x);
				}
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(fa[i]==i)
		{
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}
2024/7/18 13:07
加载中...