Cod sursa(job #2000558)

Utilizator Claudiu07Pana Claudiu Claudiu07 Data 14 iulie 2017 08:30:51
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
const int Nmax=50050;
int n,m,x,ord[Nmax],ok[Nmax],k;
typedef struct nod {
        int vf;
        nod * next;
} *PNOD, NOD;

PNOD L[Nmax];

void Add( int i, int j)
{
     PNOD p = new NOD;
     p->vf = j;
     p->next = L[i];
     L[i] = p;
}
void Read()
{


     f>>n>>m;
     int x,y;
     for ( ; m > 0; m-- )
     {
         f>>x>>y;;
         Add(x,y);
     }
}
void DFS(int nod)
{
    ok[nod] = 1;
     for ( PNOD p = L[nod]; p; p = p->next )
         if ( ok[p->vf] == 0 )
              DFS( p->vf );
     ok[nod] = 2;
     k++;
     ord[k]=nod;
}
void STop()
{
    for(int i=1; i<=n; i++)
        if(ok[i]==0) DFS(i);
}
int main()
{
    Read();
    STop();
    for(int i=k; i>0; i--)
        g<<ord[i]<<' ';
}