题目描述

有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。

游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?

输入输出格式

输入格式:

输入共2行。

第1行包含1个正整数n表示n个人。

第2行包含n个用空格隔开的正整数T1,T2,……,Tn其中第i个整数Ti示编号为i

的同学的信息传递对象是编号为Ti的同学,Ti≤n且Ti≠i

数据保证游戏一定会结束。

输出格式:

输出共 1 行,包含 1 个整数,表示游戏一共可以进行多少轮。

输入输出样例

输入样例#1:

5
2 4 2 3 1

输出样例#1:

3

说明

样例1解释

游戏的流程如图所示。当进行完第 3 轮游戏后, 4 号玩家会听到 2 号玩家告诉他自

己的生日,所以答案为 3。当然,第 3 轮游戏后, 2 号玩家、 3 号玩家都能从自己的消息

来源得知自己的生日,同样符合游戏结束的条件。

对于 30%的数据, n ≤ 200;

对于 60%的数据, n ≤ 2500;

对于 100%的数据, n ≤ 200000。

其实暴力DFS就可解。

然而我写了tarjan,利用缩点后点集的大小来判断答案。

 1 /**/
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<algorithm>
 7 using namespace std;
 8 const int mxn=230000;
 9 int v[mxn];
10 int dtime=0;
11 bool inst[mxn];
12 int st[mxn],top;
13 int low[mxn],dfn[mxn];
14 //
15 int belone[mxn],cnt=0;
16 int dg[mxn];
17 //
18 int n;
19 void tarjan(int u){
20     low[u]=dfn[u]=++dtime;
21     st[++top]=u;
22     inst[u]=1;
23     //
24     if(!dfn[v[u]]){
25         tarjan(v[u]);
26         low[u]=min(low[u],low[v[u]]);
27     }
28     else if(inst[v[u]])
29         low[u]=min(low[u],dfn[v[u]]);
30     //
31     if(low[u]==dfn[u]){
32         ++cnt;
33         int w;
34         do{
35             w=st[top--];
36             dg[cnt]++;
37             inst[w]=0;
38         }while(w!=u);
39     }
40     return;
41 }
42 int main(){
43     scanf("%d",&n);
44     int i,j;
45     for(i=1;i<=n;i++){
46         scanf("%d",&v[i]);
47     }
48     for(i=1;i<=n;i++){
49         if(!dfn[i])tarjan(i);
50     }
51     int ans=5000000;
52     for(i=1;i<=cnt;i++) {if(dg[i]<ans && dg[i]!=1)ans=dg[i];}
53     printf("%d\n",ans);
54     return 0;
55 }

转载于:https://www.cnblogs.com/SilverNebula/p/6078791.html

[NOIP2015] 提高组 洛谷P2661 信息传递相关推荐

  1. 2019年东莞特长生 游戏(洛谷 P2661 信息传递)

    Description 某校科技节到了,有? 个同学(编号为1到?)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为? 的同学的信息传递对象是编号为??的同学. 游戏开始 ...

  2. 2018.11.02 洛谷P2661 信息传递(拓扑排序+搜索)

    传送门 按照题意模拟就行了. 先拓扑排序去掉不在环上面的点. 剩下的都是简单环了. 于是都dfsdfsdfs一遍求出最短的环就行. 代码: #include<bits/stdc++.h> ...

  3. [NOIP2006] 提高组 洛谷P1066 2^k进制数

    题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...

  4. [NOIP1999] 提高组 洛谷P1014 Cantor表

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...

  5. [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...

  6. 洛谷2661 信息传递 三倍经验?

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

  7. [NOIP2012] 提高组 洛谷P1080 国王游戏

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...

  8. [NOIP2003] 提高组 洛谷P1039 侦探推理

    题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情况下),明 ...

  9. [NOIP1998] 提高组 洛谷P1011 车站

    题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起( ...

最新文章

  1. unix的sed 用法介绍
  2. 【数理知识】《数值分析》李庆扬老师-第6章-解线性方程组的迭代法
  3. C++Builder函数集(文件操作、获取时间、类型转换等)
  4. 一文了解Linux 网络 I/O 模型
  5. @scheduled注解配置时间_SpringBoot2.0实战(32)配置定时任务
  6. ~~KMP(数据结构)
  7. css:transform,transition,animation总结
  8. windows netcat的安装与使用
  9. 使用组策略统一修改客户端本地管理员密码
  10. Java练习题--员工类案例练习
  11. java考试系统_Java在线考试系统(含源码)
  12. 将element-china-area-data获取的地区编码转为文字存储
  13. uni-app开发小说阅读器
  14. 专业词汇及解释(持续更新,自用)
  15. 电子凸轮基本概念学习
  16. CentOS7部署YApi
  17. 生物特征识别技术领跑者--墨奇科技 全面亮相2022身份识别技术大会
  18. php 点击电话号码直接拨打,在网站上为手机用户提供”点击拨打电话”功能
  19. 【C++学习笔记】基本内置类型和变量
  20. 2月9日,30秒知全网,精选7个热点

热门文章

  1. java中Collections常用方法总结(包括sort,copy,reverse等)
  2. 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...
  3. 实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光
  4. linux内核udp校验和计算函数,Linux 内核IP和UDP检验和计算
  5. 2022中国私域流量管理研究报告
  6. 互联网晚报 | 2月25日 星期五 | 元宇宙概念,热度显著下降;​腾讯正洽谈落地“东数西算”大湾区枢纽韶关数据中心集群...
  7. 互联网晚报 | 11月27日 星期六 | 电子烟等新型烟草制品参照卷烟监管;有赞上线“有赞酒店”;法拉第未来收到退市通知...
  8. 产品案例:微信状态,有多牛逼?
  9. 中国广告营销行业资本报告2020
  10. 2021年暑期旅游数据报告