Cod sursa(job #300195)

Utilizator bacerandreiBacer Andrei bacerandrei Data 7 aprilie 2009 11:56:36
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#define max 50010

struct nod
{
  long info;
  nod *urm;
} *g[max] , *sol;

long n, m, i, j;
char use[max];


void adauga(int i, int j)
{
  nod *p;
  p = new nod; p->info = j;
  p->urm = g[i]; g[i] = p;
}



void df(int nd)
{
  nod *p;
  use[nd] = 1;
   p = g[nd];
  while(p)
    {
     if(use[p->info] == 0)
       df(p->info);
     p = p->urm;
    }
   p = new nod;
   p->info = nd;
   p->urm = sol;
   sol = p;
}



int main()
{
  freopen("sortaret.in" , "r" , stdin);
  freopen("sortaret.out" , "w" , stdout);
   scanf("%ld%ld" , &n , &m);
    for(i = 1 ; i <= m ; i++)
     {
       scanf("%ld%ld", &i, &j);
       adauga(i, j);
     }
   for(i = 1 ; i <= n ; i++)
     if(use[i] == 0)
       df(i);
   while(sol)
    {
      printf("%ld ", sol->info);
      sol = sol->urm;
    }
   fclose(stdin);
   fclose(stdout);
  return 0;
}