求助!哪里错了
查看原帖
求助!哪里错了
322285
北京楼主2021/8/19 08:31

此题又废掉了juruo一早上,似乎仍然没有发现哪里错了

代码:(40分)

//P1892 [BOI2003]团伙
#include<cstdio>
#include<iostream>
using namespace std;

const int N=5e3+10;

int fa[N],enemy[N],cnt;

int find(int x)
{
	if(x==fa[x])return x;
	return fa[x]=find(fa[x]);
}


int main()
{
	//freopen("P1892_2.in.txt","r",stdin);
	int n,m,x,y;
	cin>>n>>m;
	char ch=' ';
	for(int i=1;i<=n;++i)
		fa[i]=i;
	for(int i=1;i<=m;++i)
	{
		cin>>ch>>x>>y;
		if(ch=='F')
		{
			int xx=find(x),yy=find(y);
			if(xx!=yy)fa[yy]=xx;
		}
		else if(ch=='E')
		{
			int xx=find(x),yy=find(y);
			if(enemy[xx]==0)enemy[xx]=yy;
			else if(yy!=find(enemy[xx]))fa[yy]=find(enemy[xx]);
			if(enemy[yy]==0)enemy[yy]=xx;
			else if(xx!=find(enemy[yy]))fa[xx]=find(enemy[yy]);
		}
	}
	for(int i=1;i<=n;++i)
		if(fa[i]==i)++cnt;
	printf("%d",cnt);
	return 0;
}

感觉跟题解写的几乎一样了,结果还是没发现哪错了......

感谢大佬指教!

2021/8/19 08:31
加载中...