Cod sursa(job #1648800)

Utilizator SchopenhauerIordache Stefan Schopenhauer Data 11 martie 2016 11:41:40
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cstdio>
using namespace std;
ofstream g("sortaret.out");
int nr,ordine[50005],*a[50005],n,m,x,y,viz[50005];

void dfs(int nod)
     { int i;
       viz[nod]=1;
       for (i=1;i<=a[nod][0];i++)
            if (viz[a[nod][i]]==0)
               dfs(a[nod][i]);
       ordine[++nr]=nod;}

int main()
   { int i;
     FILE * f=fopen("sortaret.in","r");
     fscanf (f,"%d %d",&n,&m);
     for (i=1;i<=n;i++)
        {a[i]=(int*)realloc(a[i],sizeof(int));
         a[i][0]=0;}
     for (i=1;i<=m;i++)
       {fscanf(f,"%d %d",&x,&y);
        a[x][0]++;
        a[x]=(int*)realloc(a[x],(a[x][0]+1)*sizeof(int));
        a[x][a[x][0]]=y;
        a[y][0]++;
        a[y]=(int*)realloc(a[y],(a[y][0]+1)*sizeof(int));
        a[y][a[y][0]]=x;}
     for (i=1;i<=n;i++)
        if (viz[i]==0)
            dfs(i);
     for (i=1;i<=n;i++)
            g<<ordine[i]<<" ";
     return 0;       }