拓扑排序

Posted jeffrey-y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓扑排序相关的知识,希望对你有一定的参考价值。

技术分享图片

技术分享图片

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <queue>
 6 #include <functional>
 7 using namespace std;
 8 #define maxn 100005
 9 
10 int n, a, indegree[maxn];    
11 vector<int> G[maxn];
12 
13 void TopoSort()
14 {
15     priority_queue<int, vector<int>, greater<int> >q;
16     for (int i = 1; i <= n; i++) 
17         if (indegree[i] == 0)q.push(i);
18     while (!q.empty()) {
19         int u = q.top();
20         q.pop();
21         printf("v%d ", u);
22         for (int i = 0; i < G[u].size(); i++) {
23             int v = G[u][i];
24             indegree[v]--;
25             if (indegree[v] == 0)
26                 q.push(v);
27         }
28     }
29 }
30 
31 int main()
32 {
33     int u, v;
34     cin >> n >> a;
35     for (int i = 0; i < a; i++) {
36         cin >> u >> v;
37         G[u].push_back(v);
38         indegree[v]++;
39     }
40     TopoSort();
41     printf("
");
42     //system("pause");
43     return 0;
44 }

 

以上是关于拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章

拓扑排序代码:

使用 C# 代码实现拓扑排序

UVA10305 拓扑排序

【数据结构】请写出以下AOV网的拓扑排序序列

数据结构问题~啥图可以进行拓扑排序~啥图不能进行拓扑排序?

拓扑排序之变量序列代码