Luogu P2661 [NOIP2015] 信息传递】的更多相关文章

qwq 今天做完并查集突然想起来这道以前做的好(shui)题, 虽然是黄题,但是是并查集一个比较特别的用法 这道题大概可以用求最小环的方式来做,但是从直觉上果然还是并查集w 乍一看只要求出“父→子”即为环,每次getfa时环长度+1,再用min维护环的最小值即可 这时如果用平时的习惯写路径压缩的话,就会得到 Unaccepted 10 这是因为这道题当且仅当找到环时需要记录路径长度, 所以在连接的途中一旦压缩了路径,就会在最后寻找环时忽略一部分长度 其次,当找到环时不需要把构成环的最后一条路连接…
问题描述 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学. 游戏开始时,每人都只知道自己的生日.之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象).当有人从别人口中得知自己的生日时,游戏结束.请问该游戏一共可以进行几轮? 输入格式 输入共 2 行. 第 1 行包含…
[NOIP2015]信息传递[问题描述]有…
LOJ2421 NOIP2015 信息传递 LINK 题目大意就是给你一个有向图,求最小环 有一个很奇妙的性质叫做每个点只有一条出边 然后我们考虑对每个强联通分量进行考虑 发现每个强联通分量内的边数一定和点数相等 也就是说一个强连通的大小就是这个环的长度 然后就可以来一个很常规的tarjan算一下就好了 #include<bits/stdc++.h> using namespace std; #define N 200010 int prt[N],vis[N],n; ,dfn[N],low[N…
信息传递 题目描述 有 N 个同学( 编号为 1 到 N) 正在玩一个信息传递的游戏. 在游戏里每人都有一个固定的信息传递对象, 其中,编号为i的同学的信息传递对象是编号为ti的同学. 游戏开始时, 每人都只知道自己的生日.之后每一轮中, 所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象 ( 注意: 可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象). 当有人从别人口中得知自己的生日时, 游戏结束. 请问该游戏一共可以进行几轮? 输入 输入文件名为…
描述 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 TiTi 的同学. 游戏开始时,每人都只知道自己的生日.之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象).当有人从别人口中得知自己的生日时,游戏结束.请问该游戏一共可以进行几轮? 格式 输入格式 输入共 2 行. 第 1 行…
★☆   输入文件:2015message.in   输出文件:2015message.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自…
题目来源:洛谷P2661 思路 运用并查集查找图中最小环的长度 如果A传递信息给B 就从A加一条边指向B 并更新A的父节点 从A到父节点的路径长度为B到父节点的路径长度+1 如果有两个点的祖先相同而且他们之中有一个人要传递信息给另一个人 那么说明他们之间有一个环 环的长度就是他们分别到祖先的路径长之和+1 代码 #include<iostream> using namespace std; #define maxn 200020 int fa[maxn],lun[maxn]; ; int fi…
题目大意:给定一棵 N 个节点的内向树森林,求该内向树森林的最小环的大小(按边计算). 题解:先删链,再计算环的大小,统计答案即可. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,ans,to[maxn],indeg[maxn]; bool vis[maxn]; void read_and_parse(){ scanf("%d",&n); for(int…
题目大意:给定一个有 N 个点,N 条边且每个点的出度均为 1 的有向图,求该有向图的一个最小环. 题解:由于每个点的出度均为 1,可知可能的情况只有以下几种:一个环或多个环,一个环+一条链.因此,可以采用 Tarjan 缩点,求出每个强连通分量,更新答案贡献.另外,学到了一种并查集做法,由于每条边的出度均为 1,可知当第 i 个点连出边时,这个点一定是作为其他点的祖先或是一个独立的点.因此,让这个点合并到边的终点所对应的集合,并记录下该点到祖先节点之间的距离.当一个边的起点和终点在同一个集合中…