Cod sursa(job #800034)

Utilizator gegeadDragos Gegea gegead Data 20 octombrie 2012 16:50:26
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
int n,m,p[50001];
bool viz[50001];
vector <int> l[50001];
queue <int> q;

void bfs()
{
    int c;vector<int>::iterator it;
    memset(viz,0,sizeof(viz));
    while(!q.empty())
    {
        c=q.front();
        q.pop();
        printf("%d ",c);
        for(it=l[c].begin();it!=l[c].end();++it)
        {
            p[*it]--;
            if(p[*it]==0)
                q.push(*it);
        }
    }
}




int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    int i,u,v,j,ok=1;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&u,&v);
        l[u].push_back(v);
        p[v]++;
    }
    for(i=1 ; i<=n ; i++)
        if(p[i] == 0)
            q.push(i);
    bfs();
    printf("\n");
    return 0;
}