码迷,mamicode.com
首页 > 其他好文 > 详细

P1892 团伙

时间:2019-07-04 14:29:11      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:href   数组   problem   ios   lib   cin   stream   pac   exit   

题面:https://www.luogu.org/problemnew/show/P1892

本题可以把朋友并在一起,用一个数组记录敌人,然后把敌人的敌人和自己并在一起即可。

Code:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<ctime>
using namespace std;
int n,m,i,ans,a,b,f[500005],s[500005];
char c;
int find(int x){
    if(f[x]==0){
        return x;
    }
    else{
        return f[x]=find(f[x]);
    }
}
void unionn(int a,int b){
    int l=find(a);
    int r=find(b);
    if(l!=r){
        f[l]=r;
    }
}
int main(){
    cin>>n>>m;
    for(i=1;i<=m;i++){
        cin>>c>>a>>b;
        if(c==‘F‘){
            unionn(a,b);
        }
        if(c==‘E‘){
            if(s[a]!=0){
                unionn(s[a],b);
            }
            if(s[b]!=0){
                unionn(s[b],a);
            }
            s[a]=b;
            s[b]=a;
        }
    }
    for(i=1;i<=n;i++){
        if(f[i]==0){
            ans++;
        }
    }
    cout<<ans<<endl;
    exit(0);
}

P1892 团伙

标签:href   数组   problem   ios   lib   cin   stream   pac   exit   

原文地址:https://www.cnblogs.com/ukcxrtjr/p/11131951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!