题目链接:洛谷 P2661 信息传递

一个人要想知道自己的生日,就意味着信息的传递是成环的,因为每轮信息只能传递一个人,传递的轮数就等于环的大小

环的大小就等于环中的两个点到第三个点的距离之和加一,我们就可以在使用并查集时,维护每个点到某个确定点的距离

不妨令这个确定点为当前点的祖先,在同一个集合中,所有的点拥有共同的祖先,因此可以确定环的大小

有可能有多个环,最小的环就是最小的轮数

 #include <bits/stdc++.h>
using namespace std;
int f[];
int l[]; //到祖先的距离
int minn = <<; int fa(int a){
if(f[a] != a){
int father = f[a];
f[a] = fa(f[a]);
l[a] += l[father];
}
return f[a];
} bool check(int a,int b){
return fa(a) == fa(b);
} void link(int a,int b){
if(!check(a,b)){
f[fa(a)] = fa(b);
l[a] = l[b]+;
}
else //已经成环
minn = min(minn,l[a]+l[b]+);
} int main()
{
int n;
cin>>n;
for(int i=;i<=n;++i)
f[i] = i;
for(int i=;i<=n;++i){
int ans;
cin>>ans;
link(i,ans);
}
cout<<minn;
return ;
}

最新文章

  1. UWP开发之Mvvmlight实践一:如何在项目中添加使用Mvvmlight(图文详解)
  2. BOP 2016 复赛题目
  3. keyup keydown keypress 区别
  4. 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee
  5. JavaScript之工厂方式 构造函数方式 原型方式讲解
  6. myeclipse 不能添加非myeclipse开发的项目
  7. ACM之跳骚---ShinePans
  8. UITableView的常用方法
  9. Away 3d 基本属性
  10. WinForm的DataGirdView判断CheckBox是否被选中
  11. Spring Boot(九):定时任务
  12. 关于JAVA中包装类的是什么类型传递这个问题的笔记
  13. Tomcat端口被占用解决办法
  14. POJ3694 Network - Tarjan + 并查集
  15. java根据模板导出PDF详细教程
  16. windowmasker 标记基因组中的重复序列和低复杂度序列
  17. Idea安装findbugs插件,以及findbugs安装find security bugs插件
  18. LeetCode 525. Contiguous Array
  19. java代码---数据类型的强制转换----不懂啊
  20. c#用链表来存储并读取写好的配置文件

热门文章

  1. matlab 图像和 opencv 图像的相互转换
  2. MongoDB + express + node + bootstrap 搭建多人博客
  3. maven 如何将自己的jar包添加到本地仓库
  4. 创建weblogic受管理服务器和安全文件
  5. 【Ionic】---$ionicLoading ion-spinner SVG旋转加载的动画图标
  6. [转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
  7. Java之美[从菜鸟到高手演变]之智力题【史上最全】 (转)
  8. python反爬之网页局部刷新1
  9. (开发)bable - es6转码
  10. 开启win7笔记本自带无线功能