Cod sursa(job #1260013)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 10 noiembrie 2014 20:02:31
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;

ofstream g("sortaret.out");
long nr,n,m,i,j,v[50001],x,y,uz[50001];
vector <long> mat[50001];
void sortare(long k)
{
    long sav;
    for (int i=0;i<mat[k].size();i++)
        if (uz[mat[k][i]]==0)
        {
            sav=mat[k][i];
            sortare(sav);
        }
    v[nr]=k;
    uz[k]=1;
    nr--;
}
int main()
{
    freopen("sortaret.in","r",stdin);
    scanf("%ld%ld",&n,&m);
    for (i=1;i<=m;i++)
    {
        scanf("%ld%ld",&x,&y);
        mat[x].push_back(y);
    }
    nr=n;
    for (i=1;i<=n;i++)
        if (uz[i]==0)
            sortare(i);
    for (i=nr+1;i<=n;i++)
        g<<v[i]<<' ';
    for (i=1;i<=n;i++)
        if (uz[i]==0)
            g<<i<<' ';

    g.close();
    return 0;
}