Cod sursa(job #1740107)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 10 august 2016 20:45:37
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
using namespace std;
FILE *f1=fopen("sortaret.in","r");
FILE *f2=fopen("sortaret.out","w");
int n,m,v[50001];
struct nod{
    int inf;
    nod *urm;
}*L[50001],*sol;
void adaugsf(int val,nod *&vf){
    nod *q;
    q=new nod;
    q->inf=val;
    q->urm=vf;
    vf=q;
}
void cit(){
    fscanf(f1,"%d%d",&n,&m);
    int i,a,b;
    for (i=1;i<=m;i++){
        fscanf(f1,"%d%d",&a,&b);
        adaugsf(b,L[a]);
    }
    fclose(f1);
}
void DFS(int k){
    v[k]=1;
    nod *q;
    q=L[k];
    while(q!=0){
        if (v[q->inf]==0) DFS(q->inf);
        q=q->urm;
    }
    adaugsf(k,sol);
}
int main(){
   cit();
   int i;
   nod *q;
   for (i=1;i<=n;i++)
     if (v[i]==0)
         DFS(i);
   q=sol;
   while(q!=0){
      fprintf(f2,"%d ",q->inf);
      q=q->urm;
   }
   fclose(f2);
   return 0;
}