不开O2是WA,开了O2WA+RE(?
//https://www.luogu.com.cn/problem/P1892
#include <iostream>
#include <cstdio>
#include <bitset>
using namespace std;
#define MAXN 1010
int n,m,s[MAXN*2],p,q,tmp;
char opt;
bitset<MAXN>flag;
int find(int x)
{
if(s[x]!=x)
s[x]=find(s[x]);
return s[x];
}
void merge(int x,int y)
{
s[find(x)]=find(y);
}
int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
tmp=n*2;
for(int i=1;i<=tmp;i++)
s[i]=i;
while(m--)
{
cin >> opt >> p >> q;
switch(opt)
{
case 'E':
merge(p,q+n);
merge(q,p+n);
break;
default:
merge(p,q);
break;
}
}
for(int i=1;i<=n;i++)
flag[find(i)]=true; //看大家这里都用的是ans+=s[i]==i,为什么可以这么做
cout << flag.count() << endl;
return 0;
}