趁着我还活在网上 多写点题解
* NOIP 2015 D1 T2 信息传递*

2996: [NOIP2015]信息传递 D1 T2
Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 21  Solved: 7
[Submit][Status][Web Board]
Description有 n 个同学(编号为1到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学。
游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?
Input输入共2行。
第1行包含1个正整数 n,表示 n 个人。
第2行包含 n 个用空格隔开的正整数 T1,T2,……,Tn,其中第 i 个整数 Ti 表示编号为 i 的同学的信息传递对象是编号为 Ti 的同学, Ti ≤ n 且 Ti ≠ i。
数据保证游戏一定会结束。
Output输出共1行,包含1个整数,表示游戏一共可以进行多少轮。
Sample Input
5
2 4 2 3 1
Sample Output
3
【数据规模与约定】
对于30%的数据,n≤200;
对于60%的数据,n≤2500;
对于100%的数据,n≤200000。
01.我不想讲什么传说中的60分做法 我也不知道他是怎么想的 因为深搜就是满分做法.....
02.正式的01 拓扑排序来找环..我的小伙伴们都试验过了  还挺快的 不过数据也是够弱的 要是我 一定有一个点答案得200000
03.我想讲的 我们可以用一些简单的图论的方法来解题.....我们可以先将图存起来 然后跑一下floodfill 把走过的地方标记 并记下他是第几次到达此位置,如果该点北到达两次 说明存在一个环 那么两次到这里的迭代差即为环的长度 时间复杂度是一个均摊的O(n) 不过要注意爆栈的问题 但是数据弱的不行  。。。也没什么说的

在这里我只给03的做法…..代码如下

#include <bits/stdc++.h>
using namespace std;
long long ans,ansn;
long long road[200001];
bool f[200001];
long p[200001];
long long t[200001];
void dfs(long long x,long long s,long long cnt)
{if (!f[x]){f[x]=true; t[x]=s; p[x]=cnt; dfs(road[x],s+1,cnt); } else{if (s-t[x]<ans && cnt==p[x])ans=s-t[x]; }
}
inline int read()
{int x = 0, f = 1; char ch = getchar();while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }return x * f;
}
int main()
{long n,i;cin>>n;for (i=1;i<=n;i++)road[i]=read();       memset(f,false,sizeof(f));ans=n;for (i=1;i<=n;i++) if (!f[i])dfs(i,0,i);printf("%lld",ans);return 0;
}

NOIP 2015 D1 T2 信息传递相关推荐

  1. 2015 NOIP day2 t2 信息传递 tarjan

    信息传递 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.luogu.org/problem/show?pid=2661 Descrip ...

  2. 信息传递(tarjan算法)

    信息传递 来源: NOIP 2015 Day1 T2 题目描述: 有个同学(编号为 1 到)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为的同学的信息传递对象是编号为的 ...

  3. NOIP 2015 d1t2 信息传递

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

  4. NOIP 2015 蒟蒻做题记录

    昨天做了noip 2015 的题.因为之前做过几道,最开始做的很快,也都A了.可是子串斗地主运输计划什么的这些没做过的题还是把我恶心的不行QAQ我这个大蒟蒻还是没有A掉..所以说先写一下应该得到的暴力 ...

  5. NOIP2015提高组 信息传递(图论)

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

  6. 从信息传递的视角看因果关系

    来源:混沌巡洋舰 因果推断让大数据更有温度在六种看待因果关系的视角(机制,反事实,干预,过程,信息传递及概率因果)中,信息传递是潜在应用最广泛的一种.当我们想弄清楚是什么导致某件事情发生时,如果由于伦 ...

  7. AC日记——信息传递 洛谷 P2661 (tarjan求环)

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

  8. [拓扑排序/强联通分量] [NOIP201402] 信息传递

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

  9. tg2015 信息传递 (洛谷p2661)

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

最新文章

  1. 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
  2. ftp 服务器的目录文件是否存在,ftp服务器的目录文件是否存在
  3. Centos 6.4 python 2.6 升级到 2.7一起的MySQLdb不能使用的解决问题
  4. 手机做服务器性能咋样,服务器性能不足 怎样才能逼出最强状态
  5. 如何查看服务器并发请求连接数
  6. 【设计模式 04】代理模式
  7. php 企业邮箱,PHPMailer可能被全球邮(企业邮箱提供)拉黑
  8. Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
  9. 流畅的Python---list排序和保持有序序列
  10. GDB中打印pthread_internal_t的方法
  11. JxBrowser-JS调用和AJAX数据监听
  12. (C#.net)CAD二次开发 polyline多段线/line直线/曲线 break打断的方法
  13. 经验正交函数分析(EOF)或主成分分析(PCA)在matlab上的实现及实例
  14. Gentoo Linux安装教程20220218(长期更新维护)
  15. 【20210326期AI简报】用RISC-V微控制器开发难不难?行人搜索AI框架新突破~
  16. 一、Groovy语法(一):基础语法
  17. 数据中心蓄冷时间多长合适呢?-孙长青
  18. 【开源日记】宿舍断电自动关灯设备(一)
  19. P2P网贷平台系统市场占有率排行榜
  20. 升级4K屏,支持串流,奇遇Dream Pro上手体验

热门文章

  1. WPF 矢量图形编辑软件- Inkscape
  2. 可以免费自学编程的12个网站,祝你达巅峰
  3. PyGame|给程序插入背景音乐
  4. ubuntu python3.5安装_ubuntu12.04安装python3.5及pip3和setuptools
  5. supervisor 常见错误及其解决方案
  6. 从零开始Android游戏编程(第二版) 前言
  7. 【网络安全】重放攻击(Replay Attacks)
  8. 一、计算机基础: 特点、数制、编码、组成
  9. Excel文件格式和扩展名不匹配
  10. 关于context:property-placeholder的一个有趣现象