拓扑排序 HDU1285
2015-03-27 21:47
232 查看
这个题是个模板题,可以直接用拓扑排序的模板来做,
AC代码
View Code
AC代码
#include <stdio.h> #include<iostream> #include <string.h> using namespace std; const int N = 1000; int n, m; int Map ; int topNum ; bool toposort(int *ret) { int Indegree ; memset(Indegree, 0, sizeof(Indegree)); int k = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) Indegree[i] += Map[j][i];//计算入度,没有边的时候Map[j][i]为0 for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (Indegree[j] == 0) { --Indegree[j]; ret[k++] = j; for (int t = 1; t <= n; t++) if (Map[j][t]) Indegree[t]--; break; } } } if (k == n) return true; return false; } int main() { int a, b; while (cin >> n >> m) { memset(Map, 0, sizeof(Map)); for (int i = 0; i < m; i++) { cin >> a >> b; Map[a][b] = 1; } toposort(topNum); for (int i = 0; i < n; i++) { if (i == n - 1) printf("%d\n", topNum[i]); else printf("%d ", topNum[i]); } } return 0; }
View Code
相关文章推荐
- HDU1285 确定比赛名次(拓扑排序)
- hdu1285确定比赛名次(最简单的拓扑排序)
- hdu1285 确定比赛名次 拓扑排序
- hdu1285 确定比赛名次 (拓扑排序)
- hdu1285 - 确定比赛名次 (拓扑排序)
- hdu1285 确定比赛名次 (简单拓扑排序)
- hdu1285 & hdu4857 --拓扑排序
- HDU1285 确定比赛名次(拓扑排序模板)
- hdu1285确定比赛名次 拓扑排序之1285普通方法
- HDU1285确定比赛名次 + 拓扑排序
- hdu1285 确定比赛名次 (拓扑排序 数组.链表和BFS三种方法)
- hdu1285-拓扑排序
- hdu1285 确定比赛名次【拓扑排序】
- 拓扑排序的字典序问题 HDU1285 HDU4857
- HDU1285基于有向图邻接表的优先队列的拓扑排序
- 【拓扑排序】 hdu1285 确定比赛名次
- hdu1285(拓扑排序)
- Hdu1285 拓扑排序-确定比赛名次
- [hdu1285]确定比赛名次(拓扑排序)
- HDU1285 确定比赛名次 拓扑排序