Cod sursa(job #1703309)

Utilizator ipus1Stefan Enescu ipus1 Data 16 mai 2016 19:00:01
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
#include<vector>
using namespace std;
vector<int> v[50001];
vector<int>::iterator it;
int c[50001],vc[50001];
int main ()
{freopen ("sortaret.in","r",stdin);
freopen ("sortaret.out","w",stdout);
int n,m,i,x,q,k;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
    {scanf("%d%d",&k,&x);
    v[k].push_back(x);
    vc[x]++;
    }
q=0;
for(i=1;i<=n;i++)
    if(vc[i]==0)
        {q++;
        c[q]=i;
        }
for(i=1;i<=n;i++)
    {x=c[i];
    for(it=v[x].begin();it!=v[x].end();it++)
        {vc[*it]--;
        if(vc[*it]==0)
            {q++;
            c[q]=*it;
            }
        }
    }
for(i=1;i<=n;i++)
    printf("%d ",c[i]);
return 0;
}