求调!感谢大佬!!!
查看原帖
求调!感谢大佬!!!
541695
ZYCheney楼主2024/7/30 22:29
#include<bits/stdc++.h>
using namespace std;
int n,m,k,f[1005],a[1005][1005],ans,b[1005];
int find(int x)
{
	if(f[x]!=x)
	{
		f[x]=find(f[x]);
	}
	return f[x];
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		f[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		char b;
		cin>>b;
		int x,y;
		cin>>x>>y;
		if(b=='F')
		{
			int r1=find(x);
			int r2=find(y);
			if(r1!=r2)
			{
				f[r1]=r2;
			}			
		}
		else
		{
			a[x][y]=1;
			a[y][x]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
				int p=0;
				if(a[i][j]==1)
				{
					if(p==0)
						p=j;
					else
					{
						int r1=find(p);
						int r2=find(j);
						if(r1!=r2)
						{
							f[r1]=r2;
						}			
					}		
				}
			
		}
	}
	for(int i=1;i<=n;i++)
	{
		b[find(i)]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]!=0)
		{
			ans++;
		}  
	}
	cout<<ans;
}

本人蒟蒻,0分

2024/7/30 22:29
加载中...