Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define MAXN 100005
- ifstream f ("topsort.in");
- ofstream g ("topsort.out");
- int N, M, deg[MAXN], Q[MAXN];
- vector < int > G[MAXN];
- void solve () {
- int i, x;
- vector < int > :: iterator it;
- for (x = 1; x <= N; x++) if(deg[x] == 0) Q[++Q[0]] = x;
- for (i = 1; i <= N; i++) {
- x = Q[i];
- for (it = G[x].begin(); it != G[x].end(); ++it) {
- deg[*it] --;
- if (deg[*it] == 0) Q[++Q[0]] = *it;
- }
- }
- }
- void read () {
- int a, b;
- f >> N >> M;
- for(int i = 1; i <= M; i++) {
- f >> a >> b;
- G[a].emplace_back (b);
- deg[b] ++;
- }
- }
- void print () {
- int i;
- for(i = 1; i <= N; i++) g << Q[i] << " ";
- }
- int main () {
- read();
- solve();
- print();
- return 0;
- }
Add Comment
Please, Sign In to add comment