关注
mywgo
并查集的板子
#include<iostream>
(30316)#include<vector>
#include<map>
(30192)#include<algorithm>
using namespace std;
map<int,int> father; //通过散列表map实现的father数组
map<int,int> height; //记录每个节点的高度
int find(int x){
if(father.find(x)!=father.end()){
if(father[x]!=x)
father[x]=find(father[x]); //路径压缩(最后自己通过例子模拟下过程)
}
else{//如果还没有出现的新节点。把father设成他自己(表示根节点),height设成0
father[x]=x;
height[x]=0;
}
return father[x];
}
void Union(int a,int b){//合并函数
a=find(a);
b=find(b);
if(a!=b){
if(height[a]>height[b])
father[b]=a;
else if(height[b]>height[a])
father[a]=b;
else{
father[a]=b;
height[a]++;
}
}
}
int main()
{
int i,j;
while(cin>>i>>j){
Union(i,j);
}
int sum=0;
for(auto it=father.begin();it!=father.end();it++){
if(it->first==it->second)sum++; //只要有一个父亲是本身的就说明是根节点
}
cout<<sum<<endl;
return 0;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
offer快来coming:接好运
点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
237376次浏览 2039人参与
# 机械求职避坑tips #
23650次浏览 249人参与
# 北方华创开奖 #
67096次浏览 553人参与
# 25届秋招总结 #
411226次浏览 4128人参与
# 25届机械人为了秋招做了哪些准备? #
26290次浏览 363人参与
# 地方国企笔面经互助 #
6964次浏览 17人参与
# 阿里云管培生offer #
62612次浏览 1760人参与
# ai智能作图 #
29094次浏览 351人参与
# 虾皮求职进展汇总 #
91789次浏览 750人参与
# 实习,投递多份简历没人回复怎么办 #
2440840次浏览 34746人参与
# 软件开发投递记录 #
1481651次浏览 23947人参与
# 我的实习求职记录 #
6133608次浏览 84021人参与
# 我在牛爱网找对象 #
74896次浏览 555人参与
# 发工资后,你做的第一件事是什么 #
9155次浏览 43人参与
# 985本硕1个中小厂offer,摆烂or继续努力 #
83307次浏览 602人参与
# 机械人怎么评价今年的华为 #
157965次浏览 1352人参与
# 京东求职进展汇总 #
513095次浏览 4680人参与
# 如果可以,你希望哪个公司来捞你 #
33960次浏览 196人参与
# 你觉得通信/硬件有必要实习吗? #
54800次浏览 698人参与
# 歌尔求职进展汇总 #
42910次浏览 294人参与
# 在职场上,你最讨厌什么样的同事 #
6086次浏览 91人参与
# 如果再来一次,你还会选择这个工作吗? #
115857次浏览 1144人参与