首页 > 其他 > 详细

P2078 朋友

时间:2020-04-19 10:26:15      阅读:52      评论:0      收藏:0      [点我收藏+]

算法

并查集+map

思路

与负数,用map

代码

#include<bits/stdc++.h>
#define r(i,a,b) for(int i=a;i<=b;i++)
using namespace std;int n,m,p,q,u,v,tat,tot;
map<int,int>f;//STl大法好
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
void judge(int x,int y){f[find(x)]=find(y);}
bool too(int x,int y){return find(x)==find(y);}
int main()
{
    scanf("%d%d%d%d",&n,&m,&p,&q);//输入
    r(i,-1*m,n) f[i]=i;//初始化
    r(i,1,p+q)//直接一起做
     {
        scanf("%d%d",&u,&v);
        judge(u,v);
     }
    r(i,-1*m,-1)
     if(too(f[i],-1)) tat++;//找连接在一起的
    r(i,1,n)
     if(too(f[i],1)) tot++;//同理
    printf("%d",min(tat,tot));//几对朋友就是最小值
}

  

 

P2078 朋友

原文:https://www.cnblogs.com/ruanmowen/p/12730127.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!