Pagini recente » Cod sursa (job #2441456) | Cod sursa (job #2883741) | Cod sursa (job #20644) | Cod sursa (job #142894) | Cod sursa (job #651349)
Cod sursa(job #651349)
#include<stdio.h>
#include<stdlib.h>
#define NR 100004
FILE *fis, *rez;
int n,m,viz[NR],contor1,contor2,varf[NR];
typedef struct Node {int inf;
struct Nod *urm; } Nod;
Nod *x[NR];
void deschidere ()
{fis=fopen("sortaret.in", "r");
rez=fopen("sortaret.out", "w");}
void inchidere ()
{fclose (fis);
fclose(rez);}
int adauga(int a, int b)
{Nod *p;
if(!(ptr=(Nod*)malloc(sizeof(Nod)))) return 0;
p->inf=b;
p->urm=x[a];
x[a]=p;
return 1;}
void cit()
{int a, b;
for(contor1=0;contor1<m;++contor1)
{fscanf(f,"%d%d",&a,&b);
if(adauga(a,b)!=0)
{printf("greseala");
return ;}
}}
void scriere ()
{for (contor1=1;contor1<=n;++contor1)
fprintf(g,"%d ",varf[contor1]);}
void parc_DFS(int stiva)
{Nod *p;
viz[stiva]=1;
for(p=x[stiva]; p!=0; p=p->urm)
if(viz[p->inf]==0)
parc_DFS(p->inf);
contor2=contor2-1;
varf[contor2]=stiva;}
int main ()
{deschidere();
fscanf(fis,"%d%d", &n,&m);
cit();
contor2=n+1;
for(contor1=1;contor1<=n;contor1++)
if(viz[contor1]==0)
parc_DFS(contor1);
scriere();
inchidere();
return 0;}