Cod sursa(job #1161183)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 31 martie 2014 08:16:58
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#define maxn 50003
#include<vector>
#include<queue>
using namespace std;
unsigned int d[maxn];
vector <unsigned int> G[maxn];
queue <unsigned int> Q;
unsigned int n,m,x,y;
int main(){
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    scanf("%u%u", &n,&m);
    for(int i=1;i<=m;++i){
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
        ++d[y];
    }
    for(int i=1;i<=n;++i)
        if(!d[i])
            Q.push(i);
    while(!Q.empty()){
        int x=Q.front();
        Q.pop();
        printf("%d ",x);
        for(int i=0;i<G[x].size();++i){
            --d[G[x][i]];
            if(!d[G[x][i]])
                Q.push(G[x][i]);
        }
    }
    return 0;
}