关注
//第一题并查集思路,供参考
#include <stdio.h>
#define N 100020
int friends[N];//每个人所属的连通分量,即构成朋友树时每个人的父节点
int rank[N];//连通分量的权值,即朋友树的大小
int res;
void init(int n)//初始化initialization
{
for(int i=0;i<n;i++)
{
friends[i]=i;
rank[i]=0;
}
}
int findRoot(int x)//寻找x所属的朋友树的根节点
{
//一直向上遍历寻找根节点
while(x != friends[x])
x = friends[x];
return x;
}
void connect(int x,int y)
{
int xRoot = findRoot(x);
int yRoot = findRoot(y);
if(xRoot == yRoot)
return ;
//判断树高,小树并在大树下
if(rank[xRoot] < rank[yRoot])
friends[xRoot]=yRoot;
else
{
friends[yRoot] = xRoot;
if(rank[xRoot]==rank[yRoot])//两树高相等,合并后树高+1
rank[xRoot]++;
}
--res;
}
int main()
{
int n;
init(N);//初始化
scanf("%d",&n);
res = n;
for(int i=1;i<=n;i++){
int t;
while(~scanf("%d",&t)){
if(t == 0)
break;
connect(i,t);
}
}
printf("%d",res);
return 0;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
283830次浏览 2485人参与
# 学历or实习经历,哪个更重要 #
48275次浏览 375人参与
# 阿里云管培生offer #
1856次浏览 46人参与
# 地方国企笔面经互助 #
3395次浏览 7人参与
# 如何一边实习一边秋招 #
989695次浏览 12623人参与
# 选完offer后,你后悔学本专业吗 #
17715次浏览 125人参与
# 北方华创开奖 #
24914次浏览 268人参与
# 0offer是寒冬太冷还是我太菜 #
894313次浏览 7974人参与
# 海康威视求职进展汇总 #
397524次浏览 3402人参与
# 得物求职进展汇总 #
65201次浏览 674人参与
# 没有实习经历,还有机会进大厂吗 #
809950次浏览 13896人参与
# 美团求职进展汇总 #
1322296次浏览 12413人参与
# 寒假躺平还是提前实习 #
60751次浏览 472人参与
# 学历对求职的影响 #
343187次浏览 3137人参与
# 你们公司几号发工资 #
10609次浏览 99人参与
# 你最想要的公司福利是? #
44005次浏览 166人参与
# 查收我的offer竞争力报告 #
21651次浏览 267人参与
# 听到哪句话就代表面试稳了or挂了? #
93553次浏览 783人参与
# 如果实习可以转正,你会不会放弃秋招 #
206450次浏览 2810人参与
# 一觉醒来,我觉醒了超级打工人系统 #
3735次浏览 38人参与
# 网申一定要掌握的小技巧 #
5205次浏览 52人参与
# 来聊聊机械薪资天花板是哪家 #
67748次浏览 461人参与