Cod sursa(job #1885639)

Utilizator RazvanatorHilea Razvan Razvanator Data 20 februarie 2017 10:29:16
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

#define N 50005

vector <int> a[N*2];
queue <int> coada;

int nrp[N];
int n,m,x,y;
int sol[N];
int contor,nod;

void bfs()
{
    for (int i=1;i<=n;i++) {
        if (nrp[i]==0) coada.push(i);
    }
    while (!coada.empty()) {
        nod=coada.front();
        coada.pop();
        fout<<nod<<' ';
        for (int i=0;i<a[nod].size();i++) {
            nrp[a[nod][i]]--;
            if (nrp[a[nod][i]]==0) {
                coada.push(a[nod][i]);
            }
        }
    }
}

int main()
{
    fin>>n>>m;
    for (int i=0;i<m;i++) {
        fin>>x>>y;
        a[x].push_back(y);
        nrp[y]++;
    }
    bfs();
}