hdu 1269
来源:互联网 发布:差额计算法 编辑:程序博客网 时间:2024/06/07 00:11
OJ
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define PB(x)(scanf("%I64d",&x))#define PRB(x)(printf("%I64d\n",(x)))#define N 100005#define M 10000#define Mod 1000int n,m,k;int low[N];int start[N];int t;stack<int> G;vector<int> Map[N];int sum = 0;int vis[N];int instack[N];void reinit(){t = 0;sum = 0;while(!G.empty())G.pop();for(int i=1;i<=n;i++)if(!Map[i].empty()) Map[i].clear();memset(vis,0,sizeof(vis));memset(instack,0,sizeof(instack));}inline int minx(int a,int b){return a>b?b:a;}void tarjan(int v){low[v]=start[v] = ++t;vis[v]=1;G.push(v);instack[v] = 1;for(int i=0;i<(int)Map[v].size();i++){if(!vis[Map[v][i]]){tarjan(Map[v][i]);low[v] = minx(low[v],low[Map[v][i]]);}else if(instack[Map[v][i]])low[v] = minx(low[v],low[Map[v][i]]);}if(low[v] == start[v]){sum++;int s;while(!G.empty()){s = G.top();G.pop();instack[s]=0;if(v == s) break;}}}void init(){while(scanf("%d%d",&n,&m)!=EOF &&(m+n)){reinit();for(int i=0;i<m;i++){int x,y;PT(x,y);Map[x].push_back(y);}for(int i=1;i<=n;i++)if(!vis[i]) tarjan(i);if(sum == 1) puts("Yes");else puts("No");}return ;}int main(){init();return 0;}
- hdu 1269
- hdu 1269
- hdu 1269
- hdu-1269
- hdu 1269
- HDU 1269
- HDU 1269
- hdu-1269
- HDU---1269
- hdu 1269
- HDU 1269 STL 自娱自乐
- hdu 1269 强连通
- hdu 1269 tarjan
- hdu 1269 迷宫城堡
- HDU 1269 迷宫城堡
- HDU 1269 - 迷宫城堡
- HDU 1269 强联通
- HDU 1269 迷宫城堡
- DP【状态压缩 】 <简单?> hlg 1473
- sdwriter脚本分析
- Windows 8于10月26日正式发售:主要功能解析
- 模拟算法
- 【转】关于SAP的用户出口 SAP的用户功能增强
- hdu 1269
- ACE日志系统之C/S模式配置文件详解
- samsung qt210
- Matlab当前工作目录current folder修改和乱码
- Struts2 权限验证
- Oracle中查看所有的表,用户表,列名,主键,外键
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第三篇:ASP.NET MVC全局观
- 递归算法之全排列问题
- DisplayObject 显示对象