Cod sursa(job #1014272)

Utilizator teoionescuIonescu Teodor teoionescu Data 22 octombrie 2013 13:25:04
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
const int Nmax = 50005;
int T[Nmax];
int nrfii[Nmax];
queue<int> q;
int sol[Nmax];
int N,M;
int main(){
    in>>N>>M;
    for(int i=1;i<=M;i++){
        int x,y;
        in>>x>>y;
        nrfii[x]++;
        T[y]=x;
    }
    for(int i=1;i<=N;i++){
        if(!nrfii[i]) q.push(i);
    }
    while(!q.empty()){
        int i=q.front();
        q.pop();
        sol[++sol[0]]=i;
        nrfii[T[i]]--;
        if(!nrfii[T[i]]) q.push(T[i]);
    }
    for(int i=N;i>=1;i--) out<<sol[i]<<' ';
    return 0;
}