以下是AC代码
#include<bits/stdc++.h>
using namespace std;
char opt;
int ans=0,n,m,x,y,fa[2020];//1~n friend n+1~2n enemy;
int getfa(int x){
if(x==fa[x]) return x;
else return fa[x]=getfa(fa[x]); }
void merge(int x,int y) {fa[getfa(x)]=getfa(y);}
//bool check(int x,int y) {return getfa(x)==getfa(y) ? 0 : 1;}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1; i<=2*n ;i++)
fa[i]=i;
for(int i=1; i<=m ;i++){
cin>>opt>>x>>y;
if(opt=='F') merge(x,y);//&&check(y,x)
else merge(y+n,x), merge(n+x,y); }
for(int i=1;i <=n;i++)
if(fa[i]==i) ans++;
cout<<ans;}
但为何倒数第四行这样写(将1~n的数合并到n+1~2n上
else merge(x,y+n), merge(y,n+x); }
就会只得10分 样例输出得2
然后就将询问答案的范围扩大到2∗n
输出6 仍然不是正确答案