uva-10305-水题-拓扑排序
Posted 菜菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva-10305-水题-拓扑排序相关的知识,希望对你有一定的参考价值。
输入n,m,n代表点数,m代表边数(i,j),排序时i在j前面,没出现的点随意排
#include <iostream> #include<stdio.h> #include<math.h> #include<memory.h> using namespace std; const int maxNum = 120; int a, b; int map[maxNum][maxNum]; int vis[maxNum]; int index2; int res[maxNum]; bool topoSort(int row) { vis[row] = -1; for (int i = 1; i <= a; i++) { if (vis[i] == -1 && i != row) continue; else if (map[row][i] == 1 && vis[i] == 0) { topoSort(i); } } res[++index2] = row; vis[row] = 1; return true; } int main() { while (cin >> a >> b) { if(a == b && b == 0) { return 0; } index2 = 0; memset(map, 0, sizeof(map)); memset(vis, 0, sizeof(vis)); int j, k; for (int i = 0; i < b; i++) { cin >> j >> k; //前向边 map[j][k] = 1; } for (int i = 1; i <= a; i++) { if (vis[i] == 0) topoSort(i); } for (int i = a; i >= 1; i--) { if (i == a) { cout << res[i]; continue; } cout << " " << res[i]; } cout << endl; } return 0; }
以上是关于uva-10305-水题-拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章
[拓扑排序]Ordering Tasks UVA - 10305