Cod sursa(job #1502302)

Utilizator cristinelulCristian Virga cristinelul Data 14 octombrie 2015 15:58:47
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

int n,m,gr[50001],ma[50001][1001],c[50001];
void citire()
{
    int i,a,b;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b;
        ma[a][0]++;
        ma[a][ma[a][0]]=b;
        gr[b]++;
    }
}
void sortare()
{
    int i,p,u,x;
    p=0;
    for(i=1;i<=n;i++)
        if(gr[i]==0)
        {
            c[1]=i;
            u=1;
        }
    while(p<=u)
    {
        p++;
        x=c[p];
        for(i=1;i<=ma[x][0];i++)
        {
            gr[ma[x][i]]--;
            if(gr[ma[x][i]]==0)
                c[++u]=ma[x][i];
        }
    }
}
void afisare()
{
    int i;
    for(i=1;i<=n;i++)
        fout<<c[i]<<' ';
}
int main()
{
    citire();
    sortare();
    afisare();
    fout.close();
    return 0;
}