hdu 1269 tarjan算法模板
来源:互联网 发布:mac pro2016充电器 编辑:程序博客网 时间:2024/05/21 05:22
#include<iostream>#include<stack>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=110000;struct node{ int v,next;}edge[maxn*3];int cnt=0,n,m,ans,top,dep=0;int low[maxn],dfn[maxn],head[maxn];int vis[maxn],instack[maxn],ss[maxn];void add_edge(int u,int v){ edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt++;}void dfs(int u){ dfn[u]=low[u]=++dep; vis[u]=1; ss[++top]=u; instack[u]=1; int i; for(i=head[u];i!=-1;i=edge[i].next) { int to=edge[i].v; if(!vis[to]) { dfs(to); low[u]=min(low[u],low[to]); } else if(instack[to]) { low[u]=min(low[u],dfn[to]); } } if(low[u]==dfn[u]) { int k; ans++; do { k=ss[top]; top--; instack[k]=0; }while(k!=u); }}void judge(){ int i; ans=0; top=-1; for(i=1;i<=n;i++) { if(!vis[i]) { dfs(i,1); } }}int main (){ while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; ans=0,cnt=0; dep=0; memset(vis,0,sizeof(vis)); memset(head,-1,sizeof(head)); memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); memset(instack,0,sizeof(instack)); int i; for(i=1;i<=m;i++) { int xx,yy; scanf("%d%d",&xx,&yy); add_edge(xx,yy); } judge(); if(ans>1) printf("No\n"); else printf("Yes\n"); }}
阅读全文
0 0
- hdu 1269 tarjan算法模板
- HDU 1269 强连通模板 Tarjan算法
- hdu 1269-tarjan算法
- HDU 1269(Tarjan模板)
- 【tarjan模板】HDU 1269 迷宫城堡
- 迷宫城堡 - HDU 1269 Tarjan 模板题
- hdu 1269 Tarjan强连通分量 模板
- hdu 1269 迷宫城堡 tarjan模板
- tarjan算法模板
- Tarjan算法模板
- Tarjan算法 模板
- Tarjan 算法&模板
- Tarjan算法模板
- HDU 2586 How far away ? (离线LCA Tarjan算法模板)
- hdu 2874 lca-tarjan离线算法(模板)
- 【离线Tarjan 模板】LCA tarjan 算法 练习: hdu 2586 + poj 1986
- SCC之tarjan算法入门【HDU 1269】
- hdu 1269 迷宫城堡 (tarjan算法)
- 求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
- Java基础(集合)
- LeetCode:Assign Cookies
- 关于u3d注意点
- linux入门1
- hdu 1269 tarjan算法模板
- Shadowsock流量的随机森林检测方法
- Windows下Go语言配置和LiteIDE
- 提高代码阅读能力的7种方法
- c#导出word(笔记)
- 【图像处理】MATLAB:几何变换与图像配准
- @SuppressWarnings注解用法详解(转)
- 认识Hive
- 拓扑排序应用