Cod sursa(job #961472)

Utilizator geniucosOncescu Costin geniucos Data 12 iunie 2013 12:49:56
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
int x,n,m,i,x1,y1,cnt[50009];
queue < int > cc;
vector < int > v[50009];
vector < int > ::iterator it;
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
    scanf("%d",&x1);
    scanf("%d",&y1);
    v[x1].push_back(y1);
    cnt[y1]++;
}
for(i=1;i<=n;i++)
    if(cnt[i]==0)
    {
        cc.push(i);
        printf("%d ",i);
    }
while(!cc.empty())
{
    x=cc.front();
    for(it=v[x].begin();it!=v[x].end();it++)
    {
        cnt[*it]--;
        if(cnt[*it]==0)
        {
            cc.push(*it);
            printf("%d ",*it);
        }
    }
    cc.pop();
}
return 0;
}