Cod sursa(job #2104440)

Utilizator futurengineerOana Rosca futurengineer Data 11 ianuarie 2018 17:58:30
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

int n, m, x, y, gr[50001];
vector<int>v[50001];
vector<int>::iterator it;
queue<int>q;

int main () {
  ifstream fi("sortaret.in");
  ofstream fo("sortaret.out");
  fi >> n >> m;
  for (int i = 1; i <= m; i++)
    fi >> x >> y, v[x].push_back(y), gr[y]++;
  for (int i = 1; i <= n; i++)
    if (gr[i] == 0)
      q.push(i);
  while (!q.empty()) {
    int nodc = q.front(); q.pop();
    fo << nodc << ' ';
    for (it = v[nodc].begin(); it != v[nodc].end(); it++) {
      gr[*it]--;
      if (!gr[*it])
        q.push(*it);
    }
  }
  return 0;
}