30分,求助各位神犇,哪里错了!!!
查看原帖
30分,求助各位神犇,哪里错了!!!
178992
Hanghang楼主2020/9/16 21:32
#include<bits/stdc++.h>
using namespace std;

int n,m,f[1003],p[1003],a,b,c;
char q;
int F(int x)
{
	if(f[x]==x)return x;
	return f[x]=F(f[x]);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)f[i]=i;
	for(int i=1;i<=m;i++)
	{
		cin>>q>>a>>b;
		if(q=='F')
		{
		    a=F(a);b=F(b);
		    if(a!=b)f[a]=b;
		}
		else
		{
			if(p[b]>0)
			{
				a=F(p[b]);b=F(b);
				if(a!=b)f[a]=b;
			}
			else p[b]=F(a);
			if(p[a]>0)
			{
				b=F(p[a]);a=F(a);
				if(a!=b)f[a]=b;
			}
			else p[a]=F(b);
		}
	}
	for(int i=1;i<=n;i++)if(f[i]==i)c++;
	cout<<c<<endl;
	return 0;
}
2020/9/16 21:32
加载中...