HDU1269 迷宫城堡(tarjan判断强连通)
来源:互联网 发布:大数据 驱动 安全 编辑:程序博客网 时间:2024/05/17 06:45
裸的判断强连通,如果整个图中只有一个强连通分量,就“Yes”,否则“No”
tarjan的代码:
#include<cstdio>#include<cstring>#include<stack>using namespace std;const int N = 10001;struct Edge{int s,e,next;}edge[10*N];int n,m,e_num,vis_num,cnt,head[N],instack[N],low[N],tim[N];void AddEdge(int a,int b){edge[e_num].s=a; edge[e_num].e=b; edge[e_num].next=head[a]; head[a]=e_num++;}void getmap(){int a,b;memset(instack,0,sizeof(instack));memset(low,0,sizeof(low));memset(tim,-1,sizeof(tim));e_num=0;memset(head,-1,sizeof(head));while(m--){scanf("%d%d",&a,&b);AddEdge(a,b);}}stack <int> st;void tarjan(int x){int j;tim[x]=low[x]=++vis_num;instack[x]=1;st.push(x);for(j=head[x];j!=-1;j=edge[j].next){int u=edge[j].e;if(tim[u]==-1){tarjan(u);if(low[x]>low[u])low[x]=low[u];}else if(instack[u] && low[x]>tim[u])low[x]=tim[u];}if(low[x]==tim[x]){cnt++;do{j=st.top();st.pop();instack[j]=0;}while(j!=x);}}void solve(){int i;vis_num=cnt=0;for(i=1;i<=n;i++){if(tim[i]==-1)tarjan(i);}if(cnt==1)printf("Yes\n");else printf("No\n");}int main(){while(scanf("%d%d",&n,&m),n+m){getmap();solve();}return 0;}
- HDU1269 迷宫城堡(tarjan判断强连通)
- HDU1269迷宫城堡(强连通tarjan)
- HDU1269 迷宫城堡 强连通 Tarjan
- [HDU1269]迷宫城堡(Tarjan求强连通分量)
- HDU1269 迷宫城堡(强连通分量tarjan入门题)
- hdu1269迷宫城堡(tarjan求强连通分量模板)
- 迷宫城堡(hdu1269,强连通分量)
- HDU1269迷宫城堡(强连通分量)
- hdu1269 迷宫城堡(强连通图)
- HDU1269:迷宫城堡(强连通)
- hdu1269 迷宫城堡 (强连通分量Tarjan算法)
- hdu1269迷宫城堡 (强连通Tarjan+邻接表)
- HDU1269:迷宫城堡【强连通】
- [HDU1269]迷宫城堡(Tarjan)
- hdu1269 迷宫城堡 (强连通模板)(有向图)
- HDU1269 迷宫城堡 (强连通图判定)
- HDU1269 迷宫城堡(裸强连通分量)
- hdu1269 迷宫城堡 (简单强连通分量)
- ubuntu中KDE与GNOME安装切换
- SQL TOP 子句
- 在tomcat中配置SSI,让Tomcat支持shtml
- SQL LIKE 操作符
- unix/win32: utf8, unicode, ansi
- HDU1269 迷宫城堡(tarjan判断强连通)
- iptables用法
- 卸载sybase后重装老出错
- 观其色,听其言,察其行
- 【iPhone Development】对图片加入特定水印的方法
- 自学WPF--第十课Slider类
- java基础笔记(一)
- NOI 2010 海拔 //有向边的平面图最小割
- 今天debug一程序 出现如下错误