Cod sursa(job #1459669)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 10 iulie 2015 15:15:41
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#define fin "sortaret.in"
#define fou "sortaret.out"
#define Nmax 50001
int n,m,vizitat[Nmax];
using namespace std;

typedef struct nodul{
    int nod;
    nodul *next;
} *vecini;

vecini noduri[Nmax];
vecini ordine;

void add(int a,int b)
{
    vecini p=new nodul;
    p->nod=b;
    p->next=noduri[a];
    noduri[a]=p;

}

void dfs(int x)
{
    vizitat[x]=1;
    while(noduri[x]!=NULL)
    {
        if(!vizitat[noduri[x]->nod]) dfs(noduri[x]->nod);
        noduri[x]=noduri[x]->next;
    }
    vecini p=new nodul;
    p->nod=x;
    p->next=ordine;
    ordine=p;
}

int main()
{
    ifstream t1(fin);
    ofstream t2(fou);
    int i,j,a,b;
    t1>>n>>m;
    for(i=1;i<=m;i++)
    {
        t1>>a>>b;
        add(a,b);
    }
    for(i=1;i<=n;i++)
        if(!vizitat[i]) dfs(i);
    while(ordine!=NULL)
    {
        t2<<ordine->nod<<' ';
        ordine=ordine->next;
    }
    t1.close();
    t2.close();
    return 0;
}