Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define maxn 100005
- using namespace std;
- int n, m, x, y;
- vector < int > G[maxn];
- list < int > L;
- bool viz[maxn];
- void read () {
- cin >> n >> m;
- while (m --) {
- cin >> x >> y;
- G[x].emplace_back (y);
- }
- }
- void dfs (int k) {
- viz[k] = true;
- for (vector < int > :: iterator it = G[k].begin(); it != G[k].end(); ++it)
- if (!viz[*it]) dfs (*it);
- L.push_front (k);
- }
- void solve () {
- for (int i = 1; i <= n; ++i) if (!viz[i]) dfs (i);
- }
- void print () {
- for (list < int > :: iterator it = L.begin(); it != L.end(); ++it) cout << *it << " ";
- cout << '\n';
- }
- int main(){
- read();
- solve();
- print();
- return 0;
- }
Add Comment
Please, Sign In to add comment