HDU1269迷宫城堡(裸Tarjan有向图求强连通分量个数)
迷宫城堡Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13833 Accepted Submission(s): 6174
1 2
2 3
3 1
3 3
1 2
2 3
3 2
0 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# include <cstdio> # include <cstring> # include <iostream> # include <cstring> # include <vector> # include <stack> # include <algorithm> using namespace std; #define N 10003 int dfn[N],low[N],ins[N],Time,num;//ins是否在栈里 vector< int >gra[N]; stack< int >sta; void Tarjan( int s) { dfn[s] = low[s] = ++Time; sta.push(s); ins[s] = 1 ; for ( int i= 0 ;i<gra[s].size();i++) { int k = gra[s][i]; if (dfn[k] == 0 ){ Tarjan(k); low[s] = min(low[s] ,low[k]); } if (dfn[k] != 0 && ins[k] == 1 ){ low[s] = min(low[s] ,dfn[k]);//low[s] = min(low[s] ,low[k]);好像也是对的 } } if (dfn[s] == low[s]) { num++; while (!sta.empty()) { int temp = sta.top(); sta.pop(); ins[temp] = 0 ; if (temp == s) break ; } } } int main() { int n,m; while (scanf( "%d%d" ,&n,&m)&&(n + m)) { memset(dfn, 0 ,sizeof(dfn)); memset(ins, 0 ,sizeof(ins)); memset(low, 0 ,sizeof(low)); while (!sta.empty()) sta.pop(); for ( int i= 1 ;i<=n;i++) gra[i].clear(); int a,b; while (m--) { scanf( "%d%d" ,&a,&b); gra[a].push_back(b); } num = Time = 0 ; for ( int i= 1 ;i<=n;i++) { if (dfn[i]== 0 ) Tarjan(i); } if (num > 1 ) printf( "No\n" ); else printf( "Yes\n" ); } } |
HDU1269迷宫城堡(裸Tarjan有向图求强连通分量个数)的更多相关文章
- UVALive 4262——Trip Planning——————【Tarjan 求强连通分量个数】
Road Networks Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Stat ...
- HDU 1269 迷宫城堡 tarjan算法求强连通分量
基础模板题,应用tarjan算法求有向图的强连通分量,tarjan在此处的实现方法为:使用栈储存已经访问过的点,当访问的点离开dfs的时候,判断这个点的low值是否等于它的出生日期dfn值,如果相等, ...
- Tarjan 算法求 LCA / Tarjan 算法求强连通分量
[时光蒸汽喵带你做专题]最近公共祖先 LCA (Lowest Common Ancestors)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili tarjan LCA - YouTube Tarj ...
- Tarjan模板——求强连通分量
Tarjan求强连通分量的流程在这个博客讲的很清楚,再加上我也没理解透,这里就不写了. 缩点:将同一个连通块内的点视为同一个点. 扔一道模板题:codeVS2822爱在心中 第一问很显然就是求点数大于 ...
- poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
题目链接: 点击打开链接 题意: 给定一个有向图,求: 1) 至少要选几个顶点.才干做到从这些顶点出发,能够到达所有顶点 2) 至少要加多少条边.才干使得从不论什么一个顶点出发,都能到达所有顶点 ...
- 【算法】Tarjan算法求强连通分量
概念: 在有向图G中,如果两个定点u可以到达v,并且v也可以到达u,那么我们称这两个定点强连通. 如果有向图G的任意两个顶点都是强连通的,那么我们称G是一个强连通图. 一个有向图中的最大强连通子图,称 ...
- [学习笔记] Tarjan算法求强连通分量
今天,我们要探讨的就是--Tarjan算法. Tarjan算法的主要作用便是求一张无向图中的强连通分量,并且用它缩点,把原本一个杂乱无章的有向图转化为一张DAG(有向无环图),以便解决之后的问题. 首 ...
- (转)求有向图的强连通分量个数(kosaraju算法)
有向图的连通分量的求解思路 kosaraju算法 逛了很多博客,感觉都很难懂,终于找到一篇能看懂的,摘要记录一下 原博客https://www.cnblogs.com/nullzx/p/6437926 ...
- tarjan算法求强连通分量
先上代码: #include <iostream> #include <cstring> #include <vector> #include <stack& ...
随机推荐
- 阿里云ECS服务器云监控(cloudmonitor)Go语言版本插件安装卸载与维护
云监控Go语言版本插件安装_主机监控_用户指南_云监控-阿里云https://help.aliyun.com/document_detail/97929.html 云监控cloudmonitor 1. ...
- Proper usage of Java -D command-line parameters
https://stackoverflow.com/questions/5045608/proper-usage-of-java-d-command-line-parameters https://c ...
- Linux下设置MySql自动启动
https://www.cnblogs.com/sunny3096/p/7954146.html
- awr format
AWR-Format工具 在Chrome高版本中配置使用AWR-Format for Chrome插件
- Ionic1.x项目中的Installing npm packages问题
与npm远程源有关,可以通过cnpm来解决: 一.ionic start myApp blank --skip-npm(跳过Installing npm packages会产生的问题): 二.然后进入 ...
- 读懂掌握 Python logging 模块源码 (附带一些 example)
搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...
- Java多线程2:线程的使用及其生命周期
一.线程的使用方式 1.继承Thread类,重写父类的run()方法 优点:实现简单,只需实例化继承类的实例,即可使用线程 缺点:扩展性不足,Java是单继承的语言,如果一个类已经继承了其他类,就无法 ...
- LODOP直接用base64码输出图片
Lodop中的ADD_PRINT_IMAGE,也可以直接输出base64码图片,不用加img标签,如果加了img标签,会被当做超文本对待,受浏览器引擎解析的影响. 什么时候使用base64码直接输出比 ...
- How to split DMG on macOS
hdiutil segment /users/test/test1.dmg -segmentsize 4000m -o /users/test/test2.dmg
- Add Languages to Your Xamarin Apps with Multilingual App Toolkit
With Xamarin, you can extend your cross-platform apps with support for native speakers, reaching mar ...