uva 10305(拓扑)
来源:互联网 发布:矩阵范数 编辑:程序博客网 时间:2024/06/06 18:53
题解:大意是给出多组任务的优先顺序,然后输出所有任务的优先顺序,典型拓扑排序,是个有向无环图,深搜解决。
#include <stdio.h>#include <string.h>const int N = 100 + 5;int n, m, g[N][N], topo[N], vis[N], t;void init() {memset(g, 0, sizeof(g));memset(vis, 0, sizeof(vis));memset(topo, 0, sizeof(topo));}bool dfs(int u) {vis[u] = -1;//表示正在访问for (int i = 1; i <= n; i++)if (g[u][i]) {if (vis[i] < 0)return false;else if (!vis[i] && !dfs(i))return false;}vis[u] = 1;//表示已访问topo[t--] = u;return true;}bool toposort() {t = n;for (int i = 1; i <= n; i++)if (!vis[i])if (!dfs(i))return false;return true;}int main() {int v1, v2;while (scanf("%d%d", &n, &m) && (m || n)) {init();while (m--) {scanf("%d%d", &v1, &v2);g[v1][v2] = 1;}toposort();for (int i = 1; i <= n - 1; i++)printf("%d ", topo[i]);printf("%d\n", topo[n]);}return 0;}
0 0
- uva 10305(拓扑)
- Uva 10305 拓扑排序
- UVA 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 拓扑排序
- uva 10305 基本拓扑排序
- uva 10305 简单拓扑排序
- UVA 10305 拓扑排序 删边法
- UVA 10305 (拓扑排序 13.07.11)
- 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 (拓扑排序)
- android开发中用到的px、dp、sp
- 正则匹配中文字符
- C程序两则
- poj1273Drainage Ditches最大流[dinic算法]
- MYSQL入门学习之二十二:MySQL物理文件 之 日志文件
- uva 10305(拓扑)
- C++ Primer Plus的若干收获--(十一)
- HTTP Header 详解
- hdu 1106 排序(字符串的分割)
- MYSQL入门学习之二十三:MySQL物理文件 之 数据文件
- 工业以太网EtherCat学习
- sql语句中select top n与oracle的rownum与mysql的limit用法
- MYSQL入门学习之二十四:MySQL逻辑模块组成
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G