#include<iostream>
using namespace std;
int fa[100000];//父亲
int Find(int x)
{
if(fa[x]==x)return x;
else return fa[x]=Find(fa[x]);
}
void prer(int n)
{
for(int p=1;p<=n;p++)
fa[p]=p;
}
int main()
{
//1~n的集合是盆友
//n+1~2n的集合是敌人
int n,m,b,c,ans=0;
cin>>n>>m;
prer(2*n);
char a;
for(int p=1;p<=m;p++)
{
cin>>a>>b>>c;
if(a=='E')
{
int u=Find(b),v=Find(c);
fa[u+n]=v;
fa[v+n]=u;
}
if(a=='F')
{
int u=Find(b),v=Find(c);
fa[u]=v;
fa[v]=u;
}
}
for(int p=1;p<=n;p++)
if(Find(p)==p)ans++;
cout<<ans<<endl;
return 0;
}
为什么MLE了求助QAQ‘