Cod sursa(job #1926336)

Utilizator AlbertJuniorAlbert Ramona AlbertJunior Data 14 martie 2017 11:41:02
Problema Sortare topologica Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
//Larisa
#include <fstream>
#define NMAX 1001
using namespace std;

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

int G [NMAX][NMAX];

struct varf {
    int g, s;
}; varf d[NMAX];

int n, m, i, nr,  sel[NMAX], sbm, nrs, c[NMAX], j;

void citire();
void afisare();

int main()
{
    citire();
    while (nr<n)
    {
        nrs=0;sbm++;
        for (i=1; i<=n; i++)
        {
            if ((d[i].g==0)&&(sel[i]==0))
            {
                d[i].s=sbm;
                sel[i]++;
                c[++nrs]=i;
            }
        }

        for (i=1; i<=nrs; i++)
        {
            for (j=1; j<=G[c[i]][0]; j++)
            {
                d[G[c[i]][j]].g--;
            }
        }
        nr+=nrs;

    }
    afisare();
    return 0;
}
void citire()
{
    int i, k, l;
    fin>>n>>m;
    for (i=1; i<=m; i++)
    {
        fin>>k>>l;
        G[k][0]++;
        G[k][G[k][0]]=l;
        d[l].g++;

    }

}
void afisare()
{
    int i;
    for (j=1; j<=sbm; j++)
    {
        for (i=1; i<=n; i++)
        {
            if (d[i].s==j)fout << i <<" ";
        }
        //fout<<'\n';
    }
}