迷宫城堡

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11929    Accepted Submission(s): 5354

Problem Description
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间。Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i。
 
Input
输入包含多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道可以从A房间来到B房间。文件最后以两个0结束。
 
Output
对于输入的每组数据,如果任意两个房间都是相互连接的,输出"Yes",否则输出"No"。
 
Sample Input
3 3 1 2 2 3 3 1 3 3 1 2 2 3 3 2 0 0
 
Sample Output
Yes No
【题解】【Tarjan的模板题,直接求强连通分量即可】
[多组数据,只有在n、m都为0时才退出(这点非常重要,我因为有一个0就退出WA啊WA)]

include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[1000010],nxt[1000010],p[1000010],tot;
int dis[1000010],dft[1000010],root,cnt;
int d[1000010],top;
int n,m;
bool vis[1000010];inline void add(int x,int y)
{tot++; a[tot]=y; nxt[tot]=p[x]; p[x]=tot;
}inline void tarjan(int u)
{dis[u]=dft[u]=++cnt;d[++top]=u; vis[u]=1;int v=p[u];while(v>=0){if(!dft[a[v]]){tarjan(a[v]);dis[u]=min(dis[u],dis[a[v]]);}elseif(vis[a[v]]) dis[u]=min(dis[u],dft[a[v]]);v=nxt[v];}v=0;if(dft[u]==dis[u]){root++;do{v=d[top--];vis[v]=0;}while(u!=v);}return;
}
inline void slove()
{memset(dis,0,sizeof(dis));memset(dft,0,sizeof(dft));memset(d,0,sizeof(d));cnt=root=top=0;for(int i=1;i<=n;++i)if(!dft[i]) tarjan(i);return;
}int main()
{int i,j;while((scanf("%d%d",&n,&m))!=EOF){if(!n&&!m) return 0;memset(p,-1,sizeof(p));memset(nxt,-1,sizeof(nxt));tot=0; for(i=1;i<=m;++i){int x,y;scanf("%d%d",&x,&y);add(x,y);}slove();if(root==1) {printf("Yes\n");continue;}else printf("No\n");}return 0;
}

转载于:https://www.cnblogs.com/lris-searching/p/9403126.html

【HDU 1269】迷宫城堡 (Tarjan算法)相关推荐

  1. HDU 1269 迷宫城堡 -- 强连通图判断

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1269 图的强连通分量 http://baike.baidu.com/link?url=NqsmNsGC ...

  2. HDU 1269 迷宫城堡(强连通图的判定)

    最近<算法导论>快看完图论部分了,很多有关图的算法都彻底搞懂并加以证明了.现在主要是将理解的思想用到题目中来加强下.这个题目主要是判断一下整个图是否是强连通的,很简单,可以用tarjan也 ...

  3. HDU - 1269迷宫城堡 -强连通tanjar算法

    为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以 ...

  4. Hdu 1269.迷宫城堡

    Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若 ...

  5. HDU 1269 移动城堡 联通分量 Tarjan

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. 迷宫城堡——Tarjan

    传送门HDU1269 描述 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通 ...

  7. Hello Tarjan ---- Tarjan算法小结

    一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法.  ------百度百科 解读一下这句话,Tarjan算法可以解决存在强连通分量的图,而且是在线性时间内解决.所以,不得不% ...

  8. 【HDU - 1269】迷宫城堡 (tarjan算法模板)

    题干: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只 ...

  9. 【HDU 4547 CD操作】LCA问题 Tarjan算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4547 题意:模拟DOS下的cd命令,给出n个节点的目录树以及m次查询,每个查询包含一个当前目录cur和 ...

最新文章

  1. Android中修改弹出dialog背景无色透明,弹出时有遮罩
  2. 华为备忘录导入印记云笔记_原来华为手机自带会议神器,开会不用手写,这个功能就能搞定...
  3. 嵌入式开发之zynq——zynq开发环境搭建
  4. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?
  5. 【深度学习】——纠错error: Unable to find vcvarsall.bat:关于安装pycocotools
  6. Python通过amqp消息队列协议中的Qpid实现数据通信
  7. 【牛客 - 369B】小A与任务(贪心,优先队列)
  8. 高内聚低耦合通俗理解_抱歉,请不要把“业务逻辑层”理解为“业务中台”
  9. 2016重庆计算机一级考试题型,重庆计算机一级考试真题2016年最新(笔试+上机)
  10. 安全研究员公开 vBulletin 0day 的详情和 PoC
  11. Ghost本地安装highlight.js使代码高亮
  12. 工程介绍好处费性质_中间人拿工程好处费是否违法
  13. HDFS加密存储(HDP、Ranger、Ranger KMS实现)
  14. 解决IOS浏览器或者微信浏览器播放audio音效第二次播放不全
  15. JAVA毕业设计vue健康餐饮管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库
  16. 玩客云能搭建文档编辑服务器吗,轻NAS玩客云持续写盘解决办法,亲测暂时好用(弃用,只能维持一天不读写)...
  17. springboot2.3整合mybatis-plus3.3.2较为详细的教程
  18. c语言k1什么意思啊,一张图告诉你斐讯路由器K1S、K2,K2C的区别-路由器交流
  19. 服务器云平台 系统,服务器系统平台
  20. swagger 怎么去掉get delete_听我讲完GET、POST原理,面试官给我倒了杯卡布奇诺

热门文章

  1. STM32开发 -- 烧写/启动模式
  2. CoinU基本概念分享(什么是去中心化钱包、助记词丢失怎么办等)
  3. “逃离大厦”游戏的破解
  4. Android SO逆向2-实例分析
  5. ES批量提交-RestHighLevelClient
  6. android中占容器比例,Android中的容器
  7. weblogic服务器修改ip,修改weblogic服务器ip地址
  8. oracle as sydba,oracle用户 sysdba 与system,sysoper的区别
  9. c++ 定时器_【话说定时器系列】之十:PWM输入模式测量脉宽及占空比实验
  10. NOIP信息奥赛--1995“同创杯”初中复赛题题解(五)