https://www.luogu.org/problemnew/show/P1892
#include<stdio.h>
#include<string.h>
const int N=100005;
int n,m,i,ans,a,b,f[N],g[N];
char c;
int find(int x)
{
if(f[x]==0)
return x;
else
return f[x]=find(f[x]);
}
void man(int a,int b)
{
int x=find(a);
int y=find(b);
if(x!=y)
f[x]=y;
}
int main()
{
//freopen("gangs.in","r",stdin);
//freopen("gangs.out","w",stdout);
scanf("%d %d\n",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%c %d %d\n",&c,&a,&b);
if(c=='F')
man(a,b);
if(c=='E')
{
if(g[a]!=0)
man(g[a],b);
if(g[b]!=0)
man(g[b],a);
g[a]=b;
g[b]=a;
}
}
for(i=1;i<=n;i++)
if(f[i]==0)
ans++;
printf("%d\n",ans);
return 0;
}