【洛谷 2661】信息传递
题目描述
有 nn 个同学(编号为 11 到 nn )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 ii 的同学的信息传递对象是编号为 T_iTi 的同学。
游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自 己的生日时,游戏结束。请问该游戏一共可以进行几轮?
输入格式
共22行。
第11行包含1个正整数 nn ,表示 nn 个人。
第22行包含 nn 个用空格隔开的正整数 T_1,T_2,\cdots\cdots,T_nT1,T2,⋯⋯,Tn ,其中第 ii 个整数 T_iTi 表示编号为 ii 的同学的信息传递对象是编号为 T_iTi 的同学, T_i \leq nTi≤n 且 T_i \neq iTi≠i 。
输出格式
11个整数,表示游戏一共可以进行多少轮。
输入输出样例
5 2 4 2 3 1
3
说明/提示
样例1解释
游戏的流程如图所示。当进行完第33 轮游戏后, 44号玩家会听到 22 号玩家告诉他自己的生日,所以答案为 33。当然,第 33 轮游戏后,22号玩家、 33 号玩家都能从自己的消息来源得知自己的生日,同样符合游戏结束的条件。
对于 30\%30%的数据, n ≤ 200n≤200;
对于 60\%60%的数据, n ≤ 2500n≤2500;
对于100\%100%的数据, n ≤ 200000n≤200000。
我们在连接一个点到另一个点之前,先用并查集判断是否构成一个环,如果是的话,我们就可以记录下这个答案,然后维护最小的答案。
那么,如果构成一个环的话,怎么记录它的长度呢?
我们可以先定义一个变量cnt,在并查集获取祖先的函数中使cnt的值加1,最后函数结束时就能得到这个环的长度了qwq!
同时,如果构成了一个环,就不需要把这个环的结尾接上,否则会陷入死循环!!
最后附上短短的代码:
// luogu-judger-enable-o2 #include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<cstring> #include<cstdlib> #include<cstdio> using namespace std; const int N=200002; const int oo=0x3f3f3f3f; int n,fa[N],ans=oo; int find(int x,int &yc) {yc++;if(fa[x]!=x) return find(fa[x],yc);else return x; } int main(){scanf("%d",&n);for(int i=1;i<=n;i++)fa[i]=i;int yc,biu;for(int i=1;i<=n;i++) {yc=0; scanf("%d",&biu);if(find(biu,yc)==i)ans=min(ans,yc);else fa[i]=biu;}printf("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/wuhu-JJJ/p/11318579.html
【洛谷 2661】信息传递相关推荐
- 洛谷2661 信息传递 三倍经验?
问题描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- 2019年东莞特长生 游戏(洛谷 P2661 信息传递)
Description 某校科技节到了,有? 个同学(编号为1到?)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为? 的同学的信息传递对象是编号为??的同学. 游戏开始 ...
- [NOIP2015] 提高组 洛谷P2661 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- 2018.11.02 洛谷P2661 信息传递(拓扑排序+搜索)
传送门 按照题意模拟就行了. 先拓扑排序去掉不在环上面的点. 剩下的都是简单环了. 于是都dfsdfsdfs一遍求出最短的环就行. 代码: #include<bits/stdc++.h> ...
- 洛谷P2512 糖果传递
环形均分纸牌 普通的均分纸牌前缀和的总和就是答案. 但是这里是环形的,要断开的位置需要最佳,我们把每个数减去sum/n,这样总的前缀和就为0了,若在第k个数之后把环断开,环形前缀和可以统一写成s[i] ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- AC日记——信息传递 洛谷 P2661 (tarjan求环)
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- tg2015 信息传递 (洛谷p2661)
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库
技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器 承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...
最新文章
- 实战:使用 Python 用不到 10 行代码计算汽车数量
- 10、mybatis参数处理
- javaweb-服务器输出字符数据到浏览器
- Zabbix4.0 for PostgreSQL (上篇):基础环境的搭建部署
- C++:undefined reference to vtable 原因与解决办法 [转]
- 编写高质量代码:改善Java的151个建议四(基本类型)21-30
- 交换机的基本原理配置(一)
- keil5的基本使用
- JavaScript学习手册一:JS简介
- wgs84转cgcs2000 java_CGCS2000坐标系与WGS84的相互投影转换
- CSS 3 动画 实现图片动态切换
- 为什么要画ER图?有哪些画图规范?
- DCA1000 Training Video(DCA1000培训视频)
- latex 单元格 斜杠_如何在Excel中的单元格中启用键入斜杠
- 平面几何----用余弦定理证明海伦公式
- NSString NSArray NSDictionary NSSet 中的部分方法
- wxPython PyQT
- waitpid() 做人要厚道
- 用计算机弹欢乐斗地主,欢乐斗地主免费版电脑版
- 马斯克76岁父亲与继女生子,华强北又出一个芯片IPO,原蚂蚁副总投身AI制药,今日更多大新闻在此...