一直re,佬们救命orz orz
查看原帖
一直re,佬们救命orz orz
640890
cyxwin楼主2022/2/24 22:14
#include<bits/stdc++.h>
using namespace std;
int ac[5002],e[5002];
int Find(int x)
{
	int r=x;
	while(ac[r]!=r)
	r=ac[r];
	return r;
}
void merge(int x,int y)
{
	int fx,fy;
	fx=Find(x);
	fy=Find(y);
	if(fx!=fy)
	ac[fx]=fy;
}
int main()
{
	int n;
	int m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		ac[i]=i;
	}
	for(int i=0;i<m;i++)
	{
		char p;
		int x,y;
		getchar();
		scanf("%c%d%d",&p,&x,&y);
		if(p=='E')
		{
			if(!e[x])
			e[x]=y;
			else
			merge(e[x],y);
			if(!e[y])
			e[y]=x;
			else
			merge(e[y],x);
		}
		else
		{
			merge(x,y);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(Find(i)==i)
		ans++;
	}
	printf("%d\n",ans);
}
2022/2/24 22:14
加载中...