拓扑排序(给任务排序,UVA 10305)
来源:互联网 发布:数据库触发器工作原理 编辑:程序博客网 时间:2024/05/29 18:22
dfs实现
拓扑排序的结果又不唯一,别看到跟样例不一样就觉得自己错了嘛。
代码
#include<bits/stdc++.h>using namespace std;int n,m;////////////////////////////////edgesstruct Edge{ int to,next;}edges[10010];int head[110],tot;void init(){ memset(head,-1,sizeof(head)); tot=0;}void add(int from,int to){ edges[tot].to=to; edges[tot].next=head[from]; head[from]=tot++;}/////////////////////////////////int ans[110];int t;int vis[110];bool dfs(int u){ vis[u]=-1; for(int e=head[u];~e;e=edges[e].next) { int v=edges[e].to; if(vis[v]==-1) return false; if(!vis[v]&&!dfs(v)) return false; } vis[u]=1; ans[t--]=u; return true;}bool toposort(){ for(int i=1;i<=n;i++) if(!vis[i]&&!dfs(i)) return false; return true;}int main(){ while(scanf("%d %d",&n,&m)==2&&(n+m)) { init(); memset(vis,0,sizeof(vis)); t=n; int u,v; while(m--) { scanf("%d %d",&u,&v); add(u,v); } assert(toposort()); for(int i=1;i<=n;i++) printf("%d%c",ans[i],i==n?'\n':' '); } return 0;}
0 0
- 拓扑排序(给任务排序,UVA 10305)
- 例题6-15 给任务排序 UVA 10305(拓扑排序)
- 紫书章六例题15 给任务排序 UVA 10305(拓扑排序)
- 例题:给任务排序(UVa 10305)
- 给任务排序(uva 10305)
- UVA 10305 给任务排序
- UVa 10305 给任务排序
- uva 10305 给任务排序
- 10305UVa给任务排序
- Uva10305给任务排序(拓扑排序 板子题)
- 给任务排序(Ordering Tasks,UVa 10305)
- Uva 10305 拓扑排序
- UVA 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 Ordering Tasks(拓扑排序)
- [UVA 10305] Ordering Tasks (拓扑排序)
- 当当笔试题(有n个人成一圈,顺序排号(编号为1到n),从第一个人开始报数1到3报数),凡报到3的人出圈子,从下个人开始继续报数,直到最后一个人,问最后留下在是第几号?)
- 单例设计模式
- 如何让UDP实现可靠传输
- scipy.interpolate.lagrange
- 进程的5种终止方式
- 拓扑排序(给任务排序,UVA 10305)
- Markdown标记语言语法及使用实例
- Spring,hibernate,struts经典面试笔试题及其参考答案
- 让你快速学习python基础笔记003(一起动手实践)
- JS中的prototype
- Android Handler源码剖析
- 二叉树的遍历(递归与非递归)java实现
- BeanUtils基本使用方法与原理
- Python数据结构归纳(学习笔记)