Cod sursa(job #1926345)

Utilizator Raluca_LunguRaluca Madalina Lungu Raluca_Lungu Data 14 martie 2017 11:44:08
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#define NMAX 1000

using namespace std;

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

int G[NMAX][NMAX], nivel[NMAX], grad[NMAX];
int n, m, nr, niv;

void citire();
void rez();
void afisare();

int main()
{
    int i, j;
    citire();
    while(nr<n){
        ++niv;
        for(i=1; i<=n; i++)
            if(grad[i]==0){
                nivel[i]=niv;
                nr++;
                grad[i]--;
            }
        for(i=1; i<=n; i++)
             if(nivel[i]==niv)
                for(j=1; j<=G[i][0]; j++)
                    grad[G[i][j]]--;
    }
    afisare();
    return 0;
}

void citire()
{
    int i, vf1, vf2;
    fin>>n>>m;
    for(i=1; i<=m; i++){
        fin>>vf1>>vf2;
        G[vf1][0]++;
        G[vf1][G[vf1][0]]=vf2;
        grad[vf2]++;
    }
}

void afisare()
{
    int i;
    for(i=1; i<=n; i++)
        fout<<i<<' ';
}