20 分求助
查看原帖
20 分求助
345883
Node_Edge楼主2022/5/5 23:59

记录

#include<bits/stdc++.h>
using namespace std;
int n,m;
int fa[1005],enemy[1005],cnt;
bool sum[1005];
int find(int x){
    if(fa[x]==x) return x;
    return fa[x]=find(fa[x]);
}
void add(int x,int y) {
    int a=find(x),b=find(y);
    fa[a]=b;
}
int main(){
    cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        fa[i]=i;
    }
    while(m--){
        char opt; int p,q;
        cin>>opt>>p>>q;
        if(opt=='F'){
            fa[p]=q;
        }else{
            if(enemy[p]==0){
                enemy[p]=find(q);
            }else{
                add(q,enemy[p]);
            }
            if(enemy[q]==0){
                enemy[q]=find(p);
            }else{
                add(p,enemy[q]);
            }
        }
    }
    for(int i=1;i<=n;i++){
        sum[find(i)]=1;
    }
    for(int i=1;i<=n;i++){
        if(sum[i]) cnt++;
    }
    cout<<cnt;
    return 0;
}
2022/5/5 23:59
加载中...