强连通图之HDU1269 迷宫城堡
来源:互联网 发布:python 流对象如何传输 编辑:程序博客网 时间:2024/04/30 14:29
Tarjan模板。如果只有一个连通图输出Yes,否则No。
#include <stdio.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <limits.h>#include <math.h>#include <algorithm>#include <stack>#include <queue>#include <vector>#include <map>#include <set>#include <string>#include <sstream>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1typedef long long LL;const double pi=4.0*atan(1.0);const int MAXN=10005;vector<int> g[MAXN];int dfn[MAXN],lowlink[MAXN],sccno[MAXN],dfs_clock,scc_cnt;stack<int> s;void dfs(int u){dfn[u]=lowlink[u]=++dfs_clock;s.push(u);for(int i=0;i<g[u].size();i++){int v=g[u][i];if(!dfn[v]){dfs(v);lowlink[u]=min(lowlink[u],lowlink[v]);}else if(!sccno[v]){lowlink[u]=min(lowlink[u],dfn[v]);}}if(lowlink[u]==dfn[u]){scc_cnt++;while(1){int x=s.top();s.pop();sccno[x]=scc_cnt;if(x==u)break;}}}void Tarjan(int n){dfs_clock=scc_cnt=0;memset(sccno,0,sizeof(sccno));memset(dfn,0,sizeof(dfn));while(!s.empty())s.pop();for(int i=1;i<=n;i++)//下标1到nif(!dfn[i])dfs(i);}int main(){int i,j,k;int T;int n,m;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0)return 0;for(i=1;i<=n;i++)g[i].clear();for(i=1;i<=m;i++){scanf("%d%d",&j,&k);g[j].push_back(k);}Tarjan(n);if(scc_cnt==1)printf("Yes\n");elseprintf("No\n");}return 0;}
0 0
- 强连通图之HDU1269 迷宫城堡
- hdu1269 迷宫城堡(强连通图)
- HDU1269:迷宫城堡【强连通】
- hdu1269 迷宫城堡 (强连通模板)(有向图)
- HDU1269 迷宫城堡 (强连通图判定)
- 迷宫城堡(hdu1269,强连通分量)
- HDU1269迷宫城堡(强连通tarjan)
- HDU1269 迷宫城堡 强连通 Tarjan
- hdu1269 迷宫城堡 (简单强连通分量)
- 【强连通分量】 hdu1269 迷宫城堡
- HDU1269迷宫城堡(强连通分量)
- hdu1269 迷宫城堡【强连通分量】
- HDU1269:迷宫城堡(强连通)
- HDU1269 迷宫城堡(tarjan判断强连通)
- hdu1269 迷宫城堡 (强连通分量Tarjan算法)
- hdu1269迷宫城堡 (强连通Tarjan+邻接表)
- HDU1269 迷宫城堡(裸强连通分量)
- [HDU1269]迷宫城堡(Tarjan求强连通分量)
- C语言关键字register
- 安卓调用unity的3D界面
- 【LeetCode解题报告】Add Digits
- 野指针
- 【链表项目3-单链表应用】
- 强连通图之HDU1269 迷宫城堡
- 的规范化和分和大发光火健康和高口更何况
- 韩信点兵--中国剩余定理
- linux 切图命令
- 软件项目开发论述
- PHP知识点-1
- 着手使用ThinkPHP
- 京东联盟开通了
- 转载:一名程序员的磨练