不知为何本蒟蒻的代码WA了9个点,求dalao指点
#include<cstdio>
#include<vector>
#include<map>
#define MAXN 1005
using namespace std;
int father[MAXN];
vector<int>e[MAXN];
map<int,bool>flag;
int find(int x) {
int s1=x,s2;
while(father[s1]!=s1)s1=father[s1];
while(x!=s1) {
s2=father[x];
father[x]=s1;
x=s2;
}
return x;
}
int main() {
int n,m;
scanf("%d\n%d\n",&n,&m);
for(int i=1; i<=n; i++)father[i]=i;
for(int i=0; i<m; i++) {
int p,q;
if(getchar()=='F') {
scanf(" %d %d",&p,&q);
father[find(p)]=find(q);
} else {
scanf(" %d %d",&p,&q);
e[p].push_back(q);
e[q].push_back(p);
}
getchar();
}
for(int i=1; i<=n; i++) {
if(!e[i].empty()) {
int f=find(e[i].back());
e[i].pop_back();
while(!e[i].empty()) {
father[find(e[i].back())]=f;
e[i].pop_back();
}
}
}
for(int i=1; i<=n; i++)flag[find(i)]=true;
printf("%d",flag.size());
return 0;
}