hdu1269 tarjan算法
来源:互联网 发布:为什么淘宝不能买烟 编辑:程序博客网 时间:2024/04/27 18:50
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int N=1e4+10;const int M=1e5+10;struct Edge{int to,nxt;}edge[M];int head[N];int tot;void init(){memset(head,-1,sizeof head);tot=0;}void addEdge(int u,int v){edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;}int n,m;queue<int> Q;int vis[N];int id;int getId(int x){if(vis[x]==0) vis[x]=++id; return vis[x];}int low[N];void dfs(int u){low[u]=u;for(int k=head[u];~k;k=edge[k].nxt){int v=edge[k].to;if(!vis[v]){getId(v);dfs(v);} low[u]=min(low[u],low[v]);}}bool tarjan(){while(Q.size()) Q.pop();memset(vis,0,sizeof vis);id=0;getId(1);dfs(1);for(int i=1;i<=n;i++) if(vis[i]==0 || low[i]!=1) return false;return true;}int main(){ //freopen("in","r",stdin); //freopen("out.txt","w",stdout);while(scanf("%d%d",&n,&m)==2){if(n==0) break;init();for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);addEdge(u,v);}puts(tarjan()?"Yes":"No");} return 0;}
0 0
- HDU1269(Tarjan算法)
- hdu1269 tarjan算法
- HDU1269 迷宫城堡,Tarjan算法入门
- hdu1269 迷宫城堡 (强连通分量Tarjan算法)
- 强连通图tarjan算法模板题(HDU1269)
- HDU1269 迷宫城堡 强联通分量Tarjan算法
- hdu1269 tarjan模板题
- hdu1269之tarjan
- HDU1269 强连通Tarjan
- 【HDU1269】迷宫城堡(tarjan)
- tarjan模板(hdu1269)
- hdu1269 tarjan强联通分量
- hdu1269-图论-Tarjan-迷宫城堡
- hdu1269 强连通分量tarjan
- [HDU1269]迷宫城堡(Tarjan)
- HDU1269 迷宫城堡 有向图强连通分量Tarjan算法
- hdu1269 迷宫城堡 强连通分量 tarjan算法(前向星实现)
- 有向图tarjan算法求连通分量的粗浅讲解、证明, // hdu1269
- Mininet:路由规则实施猜想(一)
- centos下修改ssh服务的默认端口
- 3dmath复习随笔
- elasticserach
- TCP/IP协议之链路层
- hdu1269 tarjan算法
- 1/6的高中生活
- 树[数据结构]
- 关于Android SQLite3多线程并发问题,学习笔记。
- 真实感场景绘制(附源码)
- Python subprocess模块总结
- strlen()函数运算符操作与size_t
- MVC3 用Ajax删除数据和无刷新更新数据
- Android之ViewPager+Fragment实现页面点击切换和手势滑动