Cod sursa(job #547317)

Utilizator FllorynMitu Florin Danut Flloryn Data 6 martie 2011 11:23:32
Problema Sortare topologica Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>
typedef struct nod
    {
        int nr;
        struct nod *urm;
    } NOD;
NOD *l[50010],*lf;
int i,n,m,t,f;
int s[50010];

void dfs(int nd)
{
   NOD *p;
   s[nd]=1;
   p=l[nd];
   while (p)
      {
          if (s[p->nr]==0) dfs(p->nr);
          p=p->urm;
      }
   p=(NOD *)malloc(sizeof(NOD));
   p->nr=nd;
   p->urm=lf;
   lf=p;
}

  void adaug(int t, int f)
  {
      NOD *p;
      p=(NOD *)malloc(sizeof(NOD));
      p->nr=f;
      p->urm=l[t];
      l[t]=p;
  }

int main()
{
    FILE *fin,*fout;
    char c1[20];
    //printf("dati numele fisierului:"); scanf("%s",c1);
    fin=fopen("sortaret.in","r");
    fout=fopen("sortaret.out","w");
    fscanf(fin,"%ld%ld",&n,&m);
    for (i=1; i<=m; i++)
       {
           fscanf(fin,"%ld %ld",&t,&f);
           adaug(t,f);
       }

    for (i=1; i<=n; i++)
      if (s[i]==0) dfs(i);

    while (lf)
      {
          fprintf(fout,"%ld ",lf->nr);
          lf=lf->urm;
      }
    fclose(fin);
    fclose(fout);
    return 0;
}