Cod sursa(job #1131628)

Utilizator LauraAb.Laura Abef LauraAb. Data 28 februarie 2014 22:31:57
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("sortaret.in");
int n,m;
struct Nod
{
    int info;
    Nod *leg;
};
Nod *L[50005];
Nod *adresa;
int viz[50005];

void Inserare(int x, int y)
{
    Nod *p;
    p=new Nod;
    p->info = y;
    p->leg = L[x];
    L[x]=p;
}

void Citire()
{
    int i,x,y;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x>>y;
        Inserare(x,y);
    }
}

void Add(int nod)
{
    Nod *p;
    p=new Nod;
    p->info = nod;
    p->leg = adresa;
    adresa = p;
}

void DFS(int nod)
{
    int i;
    viz[nod] = 1;
    for ( Nod *p = L[nod]; p; p = p->leg )
      {
          i = p->info;
         if ( viz[i] == 0 )
              DFS(i);
      }
     viz[nod] = 2;
     Add(nod);


}

void Sortare_Topologica()
{
    int i;
    for(i=1;i<=n;i++)
    {
        if(viz[i] == 0)
        DFS(i);
    }
}
int main()
{
    Citire();
    Sortare_Topologica();

ofstream g("sortaret.out");

    for(Nod *p= adresa; p ; p=p->leg)
        g<<p->info<<" ";

    return 0;
}