qwq

今天做完并查集突然想起来这道以前做的好(shui)题,

虽然是黄题,但是是并查集一个比较特别的用法

这道题大概可以用求最小环的方式来做,但是从直觉上果然还是并查集w

乍一看只要求出“父→子”即为环,每次getfa时环长度+1,再用min维护环的最小值即可

这时如果用平时的习惯写路径压缩的话,就会得到 Unaccepted 10

这是因为这道题当且仅当找到环时需要记录路径长度,

所以在连接的途中一旦压缩了路径,就会在最后寻找环时忽略一部分长度

其次,当找到环时不需要把构成环的最后一条路连接,

否则下次有另一个点指向这个环时就会陷入死循环orz

代码如下

#include<cstdio>
#define min(x,y) (x)<(y)?(x):(y)
using namespace std;
int fa[],n,k,dpth,ans = ;
int getfa(int x,int &d) {
d++;
if(fa[x] == x)
return x;
return getfa(fa[x],d);
}
int main() {
scanf("%d",&n);
for(int i = ; i <= n; i++)
fa[i] = i;
for(int i = ; i <= n; i++) {
scanf("%d",&k);
dpth = ;
int qwq;
if(getfa(k,dpth) == getfa(i,qwq))
ans = min(ans,dpth);
else
fa[i] = k;
}
printf("%d",ans);
return ;
}

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

  1. [洛谷P2661] NOIP2015 信息传递

    问题描述 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学. 游戏开始时,每人都只知道 ...

  2. [NOIP2015]信息传递

    [NOIP2015]信息传递[问题描述]有

  3. LOJ2421 NOIP2015 信息传递 【tarjan求最小环】

    LOJ2421 NOIP2015 信息传递 LINK 题目大意就是给你一个有向图,求最小环 有一个很奇妙的性质叫做每个点只有一条出边 然后我们考虑对每个强联通分量进行考虑 发现每个强联通分量内的边数一 ...

  4. [并查集][NOIP2015]信息传递

    信息传递 题目描述 有 N 个同学( 编号为 1 到 N) 正在玩一个信息传递的游戏. 在游戏里每人都有一个固定的信息传递对象, 其中,编号为i的同学的信息传递对象是编号为ti的同学. 游戏开始时, ...

  5. [vijos]P1979 NOIP2015 信息传递

    描述 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 TiTi 的同学. 游戏开始时,每人都只知道 ...

  6. 2105. [NOIP2015] 信息传递

    ★☆   输入文件:2015message.in   输出文件:2015message.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 有n个同学(编号为1到n)正在 ...

  7. 【题解】洛谷P2661 [NOIP2015TG] 信息传递

    题目来源:洛谷P2661 思路 运用并查集查找图中最小环的长度 如果A传递信息给B 就从A加一条边指向B 并更新A的父节点 从A到父节点的路径长度为B到父节点的路径长度+1 如果有两个点的祖先相同而且 ...

  8. 【洛谷P2661】信息传递 (updated)

    题目大意:给定一棵 N 个节点的内向树森林,求该内向树森林的最小环的大小(按边计算). 题解:先删链,再计算环的大小,统计答案即可. 代码如下 #include <bits/stdc++.h&g ...

  9. 【洛谷P2661】信息传递

    题目大意:给定一个有 N 个点,N 条边且每个点的出度均为 1 的有向图,求该有向图的一个最小环. 题解:由于每个点的出度均为 1,可知可能的情况只有以下几种:一个环或多个环,一个环+一条链.因此,可 ...

随机推荐

  1. 基于mave的dubbo分别架构

    开始前,先看一下demo项目工程结构: 1.抽离接口 dubbo-api工程,根据业务抽离接口,deploy到mave nexus. public interface TestService { /* ...

  2. HTML中body与html的关系

    转载自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.相关基础 一个div块级元素没有主动为其设置宽度和高度,浏览器会为其分配可使用的最大宽度(比如全屏宽度),但是不 ...

  3. python学习之老男孩python全栈第九期_day001作业

    1.使用while循环输入 1 2 3 4 5 6     8 9 10 count = 0 while count <= 9: count += 1 if count == 7:continu ...

  4. jQuery点击页面其他部分隐藏下拉菜单

    一.开发小要点 web页面中,我们一般不用select.option来实现下拉菜单效果,因为下拉框的样式丑且难以美化,所以我们选择控制ul显示隐藏来实现同样且高大上的效果,但是不能像下拉框那样点击页面 ...

  5. 函数节流scroll,兼容火狐滚轮事件

    //函数节流 var wheelTimeout; var wheelFun = function (func) { if (wheelTimeout) { return; } func(); whee ...

  6. 三. Redis 主从复制

    特点 1. Master可以拥有多个Slave 2. 多个Slave除可以连接一个Master外,还可以连接多个Salve(避免Master挂掉不能同步,当Master挂掉,其中一个Slave会立即变 ...

  7. 你不可不知的Java引用类型之——强引用

    定义 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器宁愿抛出OOM(OutOfMemoryError)也不会回收它. 说明 不要被这个强字吓到,以为这个引用就很厉害,其实强引用就是程序 ...

  8. Linux笔记(二): WIN 10 Ubuntu 双系统

    (一)  说明 记录一次ubuntu安装过程及遇到的问题. 环境:WIN 10 单硬盘 (二)  ubuntu ISO文件下载 ubuntu 18.04 https://www.ubuntu.com/ ...

  9. Python多继承

    # -*- coding: utf-8 -*- """ Created on Tue Nov 13 16:56:03 2018 @author: zhen "& ...

  10. rsync远程同步的基本配置与使用

    rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用. rsync的官 ...