UVa 10305 - Ordering Tasks
来源:互联网 发布:知乎 王家卫 章子怡 编辑:程序博客网 时间:2024/04/29 19:59
传送门UVa 10305 - Ordering Tasks
拓扑排序的入门题。
刚开始理解起来有一点困难,现在还是半知半解,当初学树的时候也这样。过几天再来看看。
#include <cstdio>#include <cstring>using namespace std;const int MAXN = 105;int graph[MAXN][MAXN];int n, t;int topo[MAXN];int c[MAXN];bool DFS(int u);bool toposort();int main(){ //freopen("input.txt", "r", stdin); int m, i; while (scanf("%d%d", &n, &m)) { int u, v; if (n + m == 0) break; memset(graph, 0, sizeof(graph)); for (i = 0; i < m; i++) { scanf("%d%d", &u, &v); graph[u][v] = 1; } if (toposort()) { for (i = 0; i < n - 1; i++) printf("%d ", topo[i]); printf("%d\n", topo[i]); } } return 0;}bool toposort(){ int i; t = n; memset(c, 0, sizeof(c)); for (i = 1; i <= n; i++) if (!c[i] && !DFS(i)) return false; return true;}bool DFS(int u){ c[u] = -1; for (int v = 1; v <= n; v++) { if (graph[u][v]) { if (c[v] < 0) return false; else if (!c[v] && !DFS(v)) return false; } } c[u] = 1; topo[--t] = u; return true;}
0 0
- uva 10305 - Ordering Tasks
- uva 10305 - Ordering Tasks
- uva 10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- uva-10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVA 10305 Ordering Tasks
- UVa 10305Ordering Tasks
- Uva 10305 - Ordering Tasks
- uva 10305Ordering Tasks
- uva 10305 - Ordering Tasks
- uva 10305 Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVA 10305 - Ordering Tasks
- Ordering Tasks UVA 10305
- UVA - 10305 Ordering Tasks
- UVA - 10305 Ordering Tasks
- OCP-1Z0-051 第123题 JOIN中的USING子句,ON子句
- 用Linux命令行生成随机密码的十种方法
- jdk1.4和jdk1.5的invoke方法的区别
- MFC关键技术模拟(1)------MFC类层次结构
- erlang_netbeans_erlybird
- UVa 10305 - Ordering Tasks
- 加载文件的方式
- OpenCV2马拉松第11圈——meanshift与直方图反向投影
- 动态规划的适用条件
- Class.forName的作用
- 基于C/S模式的客户端软件系统
- MAC 配置 Maven
- 重载二维数组下标 看的不是很明白 先mark一下
- Android之TabHost布局