UVA 10305 Ordering Tasks
2016-04-27 21:23
239 查看
欧拉回路:每个节点走到最深再倒序输出
#include<iostream> #include<vector> #include<queue> #include<cstdio> #include<cstring> using namespace std; const int maxn=100+5; int G[maxn][maxn],topo[maxn]; int c[maxn],m,t; //保存状态; bool dfs(int u) { c[u]=-1; for(int v=1;v<=m;v++) if(G[u][v]) if(c[v]<0) return false; else if(!c[v]) if(!dfs(v)) return false; //未走遍走,若存在有向环就结束 c[u]=1;topo[--t]=u; return true; } bool toposort() { t=m; memset(c,0,sizeof(c)); memset(topo,0,sizeof(topo)); for(int u=1;u<=m;u++) if(!c[u]&&!dfs(u)) return false; //存在有向环; return true; } int main() { int n; while(scanf("%d%d",&m,&n)&&m) { memset(G,0,sizeof(G)); for(int i=0;i<n;i++) { int x,y; cin>>x>>y; G[x][y]=1; } if(toposort()) for(int i=0;i<m;i++) { if(i) putchar(' '); printf("%d",topo[i]); } putchar('\n'); } return 0; }
相关文章推荐
- 安卓取服务器上面的数据
- 关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法
- JavaScript学习汇总
- 团队项目第一阶段冲刺站立会议08
- Python提取数据
- 提高代码质量:如何编写函数
- android textView加圆环 只需要加个背景就行了
- junit的Test突然不能用了-Test is not an annotation type
- C#实现局域网内远程开机
- 团队项目第一阶段冲刺站立会议10(4月27日)
- [Java工具]Java常用在线工具集合.
- Hibernate实现分页查询的原理分析
- C# 处理带Emoji表情的的字符串
- 怎样在struts2的Action中获取request、response、session对象。
- fileReader()
- Windows核心编程之线程内幕
- 逆序输出字符串
- 相对布局和线形布局
- 【2016.4.27】二维数组分组:按照一个键值,按照多个键值
- [置顶] LaTex 符号大全