Cod sursa(job #1114162)

Utilizator MutescuMutescu Alexandru Mutescu Data 21 februarie 2014 12:41:25
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include<vector>
using namespace std;
int n,m,i,j,ver[50004],ty[50003],I,J;
vector<int> ze[50006];
vector<int>::iterator r;

int main()
{
freopen("sortaret.in", "r", stdin);
    freopen("sortaret.out", "w", stdout);
    scanf("%d %d",&n,&m);
    for(i=1;i<=m;i++){
        scanf("%d %d", &I, &J);
    ze[I].push_back(J);
    ty[J]++;
    }
    int l=1;
    for(i=1;i<=n;i++)
    if(ty[i]==0){ver[l]=i;l++;}

for(i=1;i<=n;i++)
    for(r=ze[ver[i]].begin();r!=ze[ver[i]].end();r++){
    ty[*r]=ty[*r]-1;
    if(ty[*r]==0){ver[l]=*r;l++;}}

for(i=1;i<=n;i++)
printf("%d ",ver[i]);


    return 0;

}