Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Topplogical Sort"
https://onlinejudge.u-aizu.ac.jp/problems/GRL_4_B
・トポロジカルソート
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #GRL_4_B : Topological Sort
/* Aizu Online Judge in C++ #GRL_4_B : Topological Sort https://onlinejudge.u-aizu.ac.jp/problems/GRL_4_B 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int n,m; vector<int> v[10000]; vector<bool> tf(10000); stack<int> order; void DFS(int u){ tf[u]=true; for(auto i : v[u]){ if(!tf[i]){ DFS(i); } } order.emplace(u); } int main(void){ cin>>n>>m; while(m--){ int l,r; cin>>l>>r; v[l].emplace_back(r); } for(int i=0;i<n;i++){ if(!tf[i]){ DFS(i); } } while(!(order.empty())){ cout<<order.top()<<endl; order.pop(); } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/