拓扑排序
来源:互联网 发布:淘宝客服挂起 编辑:程序博客网 时间:2024/05/18 10:42
参见ural 1022
#include<stdio.h>#include<string.h>#define MAXD 110#define MAXM 10010int N, cnt, e, first[MAXD], next[MAXM], v[MAXM], topo[MAXD], vis[MAXD];void add(int x, int y){ v[e] = y; next[e] = first[x], first[x] = e ++;}void init(){ int i, j, k; memset(first, -1, sizeof(first)); e = 0; for(i = 1; i <= N; i ++) //输入每个节点的后代,以0结束 for(;;) { scanf("%d", &k); if(k == 0) break; add(i, k); }}void dfs(int cur){ int i; vis[cur] = 1; for(i = first[cur]; i != -1; i = next[i]) if(!vis[v[i]]) dfs(v[i]); topo[-- cnt] = cur;}void solve(){ int i, j, k; cnt = N; for(i = 1; i <= N; i ++) if(!vis[i]) dfs(i); printf("%d", topo[0]); for(i = 1; i < N; i ++) printf(" %d", topo[i]); printf("\n");}int main(){ while(scanf("%d", &N) == 1) { init(); solve(); } return 0;}
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- Android中gravity与layout_gravity的区别
- 代码杂记。
- extjs 我之见解
- js中eval详解
- 关于Ant工具的配置和使用
- 拓扑排序
- GDI绘画自定(定义字数、多行文字、矩形、C#编程素描^_^)
- Edge-Avoiding Wavelets and their Applications
- WebLogic10安装图文教程
- hdu 1085 Holding Bin-Laden Captive!
- Flex中如何通过showCloseButton属性控制TitleWindow右上角关闭按钮有效/无效的例子
- oracle中spool将查询的数据写入文件
- android4.0增加遥控器按键步骤
- Dijkstra 算法总结