hdu1269 迷宫城堡 (强连通分量Tarjan算法)
来源:互联网 发布:linux 重启 reboot 编辑:程序博客网 时间:2024/04/28 16:06
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269
题解:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i。求强连通分量==1?
#include <stdio.h>#include <string.h>#define MAXN 10001struct node{int from,to,next;}edge[10*MAXN];int head[MAXN],instack[MAXN],low[MAXN],dfn[MAXN];int stack[MAXN],tot,Dindex,top,Bcnt;void Init(){//初始化tot=0,top=0,Dindex=0,Bcnt=0;memset(head,-1,sizeof(head));memset(instack,0,sizeof(instack));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));}void addEdge(int from,int to){edge[tot].from=from;edge[tot].to=to;edge[tot].next=head[from];head[from]=tot++;}void Tarjan(int x){int i,u,temp;dfn[x]=low[x]=++Dindex;//时间戳stack[top++]=x;instack[x]=1;for(i=head[x];i!=-1;i=edge[i].next){u=edge[i].to;if(!dfn[u]){Tarjan(u);low[x]=low[x]>low[u]?low[u]:low[x];}else if(instack[u]&&low[x]>dfn[u])low[x]=dfn[u];}if(low[x]==dfn[x]){Bcnt++;do {temp=stack[--top];instack[temp]=0;} while (x!=temp);}}int Scan() { char ch; int ret=0; while((ch=getchar())<'0'||ch>'9'); while(ch>='0'&&ch<='9') { ret=ret*10+(ch-'0'); ch=getchar(); } return ret; } int main(){int n,m,i,x,y;while(scanf("%d %d",&n,&m)&&(n+m)!=0){Init();while(m--){//scanf("%d %d",&x,&y);x=Scan();y=Scan();addEdge(x,y);}for(i=1;i<=n;++i){if(!dfn[i])Tarjan(i);}if(Bcnt==1)printf("Yes\n");elseprintf("No\n");}return 0;}
- hdu1269 迷宫城堡 (强连通分量Tarjan算法)
- [HDU1269]迷宫城堡(Tarjan求强连通分量)
- HDU1269 迷宫城堡(强连通分量tarjan入门题)
- hdu1269迷宫城堡(tarjan求强连通分量模板)
- HDU1269 迷宫城堡 有向图强连通分量Tarjan算法
- hdu1269 迷宫城堡 强连通分量 tarjan算法(前向星实现)
- hdu1269 迷宫城堡,有向图的强连通分量 , Tarjan算法
- HDU1269 迷宫城堡 强联通分量Tarjan算法
- 迷宫城堡(hdu1269,强连通分量)
- hdu1269 迷宫城堡 (简单强连通分量)
- 【强连通分量】 hdu1269 迷宫城堡
- HDU1269迷宫城堡(强连通分量)
- hdu1269 迷宫城堡【强连通分量】
- HDU1269迷宫城堡(强连通tarjan)
- HDU1269 迷宫城堡 强连通 Tarjan
- hdu 1269 迷宫城堡(强连通分量 Tarjan算法)
- hdu1269 迷宫城堡 tarjan求强联通分量
- HDU1269——迷宫城堡(有向图求强连通分量,Tarjan算法)
- Oracle 用户、对象权限、系统权限
- 修改Xcode默认文件信息
- table的操作
- HTML5游戏开发实践指南
- Intent(意图)
- hdu1269 迷宫城堡 (强连通分量Tarjan算法)
- dba user
- Android适配所需知识点LayoutParams
- Calendar,Date使用总结
- Eclipse安装WindowBuilder
- 高德地图手机SDK介绍及开发经验分享
- PHP开发Eaby API起步工作
- 原码,反码,补码,移码转换技巧
- 给定一个未排序数组, 找出其中最长的等差数列