并查集
2025-07-09 22:23:01
发布于:北京
14阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,f[100010],b[1010][1010],ans=0;
char c;
int find(int x)
{
if(f[x]!=x) f[x]=find(f[x]);
return f[x];
}
void lsy(int fa,int fb)
{
fa=find(fa); fb=find(fb);
f[fb]=fa;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) f[i]=i;
for(int i=1;i<=m;i++)
{
cin>>c>>x>>y;
if(c=='F') lsy(x,y);
if(c=='E')
{
b[x][y]=b[y][x]=1;
for(int j=1;j<=n;j++)
{
if(b[x][j]==1) lsy(y,j);
if(b[y][j]==1) lsy(x,j);
}
}
}
for(int i=1;i<=n;i++)
if(f[i]==i) ans++;
printf("%d",ans);
return 0;
}
这里空空如也
有帮助,赞一个