【洛谷】P2661 信息传递(并查集)

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索 横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。 阅读详情

题目描述:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

整体思路:

  • 把每个人视作一个点,并向他的信息传递对象连一条有向边构成一个有向图。每个人都有且仅有一个信息传递对象,同时这个信息传递对象不能是自己。那么这个有向图一定存在一个环。
  • 信息从自己出发又回到自己,必然是传递的路径形成了一个环。当有人得知自己得信息时就结束,说明要在这个图中寻找一个最小的环。

并查集解法:

  • 把每个信息传递对象当成是并查集构成的树结构里面的“父节点”( T i T_{i} Ti​是i的父节点)。每次将i合并到 T i T_{i} Ti​所在的集合中,并且为了记录这个直接的父子关系,此处的并查集不进行路径压缩。
  • 每次都先判断i和 T i T_{i} Ti​是否在一个集合中,如果属于一个集合的话就说明存在一个环,更新一下环的边数。此时不用把它们合并。
  • 在find函数中,除了查询x的根节点之外还要记录x到根节点的距离,当发现环的时候这个距离就是环数。

在这里插入图片描述

#include<cstdio>
#include<iostream>
  using namespace std;
    int f[200100];
    / /查询x的根结点并记录到根结点的结点数(最终检测出环的时候,结点数就是环数)	
    int find(int x,int &cot){  
    if(x==f[x]) return x;   
    int r=x;
	while(r!=f[r]){
	cot++;
	r=f[r];	
	} 
	return r;
	}
    int main(){
    int n,i,j,ans=200100;
    scanf("%d",&n);
	for(i=1;i<=n;i++) f[i]=i;	
    for(i=1;i<=n;i++){
    int Ti,cot=1;
	scanf("%d",&y);	
    if(find(Ti,cot)==i) ans=min(ans,cot);	/ /Ti和i在同一个集合中说明形成环,更新环数
    else {
    f[i]=Ti;  / /没形成环时把i归到Ti所在集合
    }
	}	
    printf("%d",ans);	
    return 0;	
	} 

总结:

  • 我们知道并查集可以用来维护一个集合,故可以用并查集来检测无向图的连通性或是用并查集来检测无向图中的环:把连通的顶点放到一个集合中就表示它们连通。遍历一个无向图的每一条边,不断地把有边相连的点加入同一个集合,如果检测到某条边上的两个点在之前就已经属于一个集合,那么这个图就存在环。
  • 对于无向图,一般不能用并查集来检测环。因为并查集维护的东西一般是双向的。如下面这个无向图,a点有3条出边,而它的出边并不一定指向a,故无法用并查集来维护这样的信息。
    在这里插入图片描述
  • 那本题是一个无向图,为什么又可以用并查集做呢?原因就在于本题的特殊之处:每个点有且只有一条出边。故我们可以把每个信息传递对象当成是并查集构成的树结构里面的“父节点”( T i T_{i} Ti​是i的父节点)。同时我们并没有对这个树结构进行路径压缩,所以当“父节点”指向“子节点”时就必然存在一个环。

上一篇博客:【leetcode】62. 不同路径 & 63. 不同路径 II (dp入门)

HBase学习二:RegionServer详解 RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数据写入的可靠性;BlockCache可以将数据块缓存在内存中以提升数据读取性能; 阅读详情

相关推荐

【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建

本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。

weixin_30694389的博客 416

《图论问题》信息传递————洛谷 P2661

题目描述 有 nnn 个同学(编号为 111 到 nnn )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 iii 的同学的信息传递对象是编号为 TiT_iTi​ 的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的...

孤独的饺子的博客 577

数据清洗(Data Cleansing)

数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗,

meimei169500的博客 1万+

【洛谷】P2661 信息传递

之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。本质上是要在一个无权有向图上求最短环,并且该图的每个顶点最多只有一个出度,可以用带权并查集来做。在游戏里每人都有一个固定的信息传递对象,其中,编号为。在并查集里的出边暂时还是指向自己的),所以,如果。的同学的信息传递对象是编号为。的同学的信息传递对象是编号为。的祖宗,并且设递归完成之后,指向的点的编号,遍历。的祖宗是谁,容易知道。...

数学、算法爱好者的博客 1189

常见机械臂模型不用找!Mujoco这儿都有!

高质量的模型集合,franka panda,so-arm100,ur之类的机械臂都有。常见机械臂模型不用找!Mujoco这儿都有!大概346M,网速不行的可以下载zip。

darcsdn 992

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

洛谷OJ: P2661 信息传递

思路:看完题目思考了一会后就想到判环即可,统计记录环的长度。#include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; const int maxn = 200000+10; int par[maxn], dis[maxn]; int n, temp, ans = 0x3f3f3f3f; void init(in...

308宿舍的鶸 374

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

洛谷P2661-信息传递(有向图最小环)

题目描述 有 n 个同学(编号为 1 到n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i的同学的信息传递对象是编号为 Ti的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得...

PleasantlY1的博客 464

Easy3D&CGAL文章目录汇总

Easy3D&CGAL文章目录汇总

dayuhaitang1的博客 2863

win7 vs2012+wdk8.0 搭建wdf驱动开发环境

开发环境搭建: 系统:win7 x64 工具:vs2012 + WDK8.0 插件:wdfcoinstaller.msi (1)先安装vs2012,再安装wdk8.0,这样在打开vs2012时可以创建windows drivers类型的工程。 注:vs2012不能安装wdk8.1,wdk8.1必须安装在vs2013上 下载链接:http://msdn.microsoft.com/zh-cn/win...

技术联盟 5342

P2661 信息传递(并查集求解最小环)

利用并查集求解有向图的最小环: 首先先建图,举个栗子: 按照: 1 --&gt; 2 2 --&gt; 4 3 --&gt; 2 4 --&gt; 3 5 --&gt; 1 这样建立一个有向图。 首先设置两个数组:   int pre[MAX_V] //查找根节点 int dis[MAX_V] //d[ i ] 定义为到根节点 发下代码吧,看着代码好理解点: #inc...

ltrbless的博客 1539

20 Embedding 与向量检索:语义为什么能变成距离

Embedding 是 RAG 语义检索的数学基础。本文用工程视角讲清文本如何变成向量,为什么语义相近会表现为距离相近,Top-K 检索如何工作,以及在模型选择、同模型约束、精确匹配和召回评估上的常见坑。

老于的笔记的专栏 6203

洛谷P2661 信息传递【并查集】

题目:https://www.luogu.org/problemnew/show/P2661 题意: 有一个有向图,问最小环的的大小。 思路: 明明是图的遍历,但是bfs会T。第二组下下来的数据n居然是12位的我也搞不懂怎么这么奇怪。 总之用并查集可以做。这个题每个点只有一个出边。 如果有一条从x到y的有向边,那么y就是x的父亲,并查集合并之后这些点的联通关系就可以找到了。 加入一条...

weixin_30347335的博客 140

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

洛谷 P2661 信息传递 并查集求最小环

并查集求最小环 https://www.luogu.org/problemnew/show/P2661 把每个同学看成一个点,信息的传递就是在他们之间连有向边,游戏轮数就是求最小环。假如说信息由A传递给B,那么就连一条由A指向B的边,同时更新A的父节点,A到它的父节点的路径长也就是B到它的父节点的路径长+1。 这样我们就建立好了一个图,之后信息传递的所有环节都按照...

霖的博客 521

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

洛谷 P2661 信息传递(并查集 & 最小环)

嗯... 题目链接:https://www.luogu.org/problemnew/show/P2661 这道题和一些比较水的并查集不太一样,这道题的思路就是用并查集来求最小环... 首先,如果我们把题目中的每一个同学都看成是一个点,并且信息只能由 i 给 T[i],所以可以看成是一个有向图,并且当自己的信息别人告诉自己的时候,说明这个有向图已经成为了一个环了。而要求游戏...

weixin_33748818的博客 303

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

洛谷P2661 信息传递 tarjan或者并查集找环

我是tarjan做的,用tarjan找环,并更新最小环长度,开始输边的时候如果有起点等于终点的就直接输出1,在tarjan中的话去掉那些长度为1的强连通分量,因为他们不能构成环,所以不能用他们更新答案。这题能用并查集做的原因是每个点只有一条向外的边,所以如果两个点祖先相同,就能构成环,所以只需要在并查集的过程中更新路径长度,然后如果两个点祖先相等,说明能构成环,更新答案,下贴用tarjan做的代码...

hhhcbw的博客,欢迎各位来访 242

洛谷 P2661 信息传递

题目链接:https://www.luogu.org/problemnew/show/P2661 题目描述: 有n个同学(编号为1到n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti​的同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可...

weixin_30636089的博客 159

洛谷P2661 信息传递(带权并查集求有向图最小环)

题目描述有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。

gyr 1238

【题解】洛谷P2661[NOIP2015]信息传递 并查集

题目链接 求最小环。可以通过并查集判断是否成环了。统计环长度可以再写一个无路径压缩的并查集,暴力的跳上去找。 #include&lt;cstdio&gt; #include&lt;algorithm&gt; using namespace std; const int N=2e5+10; inline int read() { int s=0,f=0;char ch=getchar(); ...

翻过这座山,他们就会听到你的故事 671

P2661 信息传递 求最小环 并查集 3种解法【1】

https://www.luogu.org/problemnew/show/P2661 有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会...

lattice的博客 625

NOIP 2015 信息传递

洛谷 P2661 信息传递 https://www.luogu.org/problemnew/show/P2661 JDOJ 2996: [NOIP2015]信息传递 D1 T2 https://neooj.com:8082/oldoj/problem.php?id=2996 Description 有 n个同学(编号为1到 n)正在玩一个信息传递的游戏。在游戏...

anhaoti3785的博客 258

洛谷 P2661 信息传递(图的遍历+并查集)

题目描述有 nn 个同学(编号为 11 到 nn )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 ii 的同学的信息传递对象是编号为 T_iTi​ 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有...

辞树 747

并查集以及例题

并查集最常见的题目是朋友圈之类的问题(以后有找到相关的题目会继续更新) 今天做了一下并查集的题目,洛谷P2661 信息传递,面试刚好也遇到了这题 题目核心就是求最小环。我最开始的想法是把每个节点都遍历,去寻找他的环,然后记下最小环大小,通过率只有50%,其他都是超时。然后就学了并查集,一个很酷的类型。 并查集是一种树的衍生,参考资料: 1. 并查集寻找是否有环 2. 并查集超详细讲解 这里总结一下我做这道题的经验吧。 首先并查集主要的就是合并和查找。那么根据题目其实已经给出了一个有向图,假设这个给定的数组

Azhang_的博客 323

2015 d1t2 信息传递

信息传递 https://www.luogu.com.cn/problem/P2661 题意 有n个孩子,每一个孩子都有一个伙伴,他能把自己的生日告诉他,但是不能告诉别人。(如果他知道别人的生日也一同告诉) 当有人从别人口中得知自 己的生日时,游戏结束。 分析 其实这道题就要求一个图中的最小环的节点数。为什么呢。我们来看看。 根据题意。这个消息传递,可以看做从该点传到信息传递对象,由信息传递对象传给它们的公共父亲,再传回成环。我们来看个例子: 输入 5 2 4 2 3 1 解释: 5个孩子,1号的好伙

马丘 275

洛谷 P2661 信息传递 Label:并查集||强联通分量

题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。 游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游...

weixin_34037977的博客 97
上一篇: 【leetcode】62. 不同路径 & 63. 不同路径 II (dp入门)
下一篇: 【洛谷】P1144 最短路计数(图论、bfs、dp)
准图灵奖得主
博客等级 码龄8年 355粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值