只有10分 求助
查看原帖
只有10分 求助
280983
歪歪yy楼主2021/12/3 13:37
#include<bits/stdc++.h>
using namespace std;
int s,n,m,i,f[50000],x,y;
char c;
int find(int x) {
    if (f[x]==x)    return x;
    else return find(f[x]);
}
int main() {
    scanf("%d%d",&n,&m);
    getchar();
    for(i=1; i<=n*2; i++) f[i]=i;
    for (i=1; i<=m; i++) {
        scanf("%c %d%d",&c,&x,&y);
        getchar();
        if (c=='F') f[find(x)]=find(y);
        if (c=='E') {
            f[find(x)]=find(y+n);
            f[find(y)]=find(x+n);
        }
    }
    for (i=1; i<=n; i++) f[i]=find(i);
    sort (f+1,f+1+n);
    for(i=1; i<=n; i++)
        if(f[i]!=f[i-1])
            s++;
    printf("%d\n",s);
    return 0;
}
2021/12/3 13:37
加载中...