#include<bits/stdc++.h>
using namespace std;
int fa[2001];
int n;
void init()
{
for(int i=1;i<=2*n;i++)
{
fa[i]=i;
}
return;
}
int findn(int x)
{
if(fa[x]==x) return x;
else return fa[x]=findn(fa[x]);
}
void merge(int x,int y)
{
int fx=findn(x),fy=findn(y);
fa[fx]=fy;
return;
}
int main()
{
int m;
cin>>n>>m;
init();
for(int i=1;i<=m;i++)
{
char op;int x,y;
cin>>op>>x>>y;
if(op=='F')
{
merge(x,y);
}
else if(op=='E')
{
merge(x+n,y);
merge(y+n,x);//merge(x,y+n);
}
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(i==fa[i]) cnt++;
}
cout<<cnt<<endl;
return 0;
}
注释里的这两种到底有啥区别,
一个40一个AC