Pagini recente » Cod sursa (job #1850799) | Istoria paginii runda/info_bv_11-12_1 | Cod sursa (job #2848405) | Cod sursa (job #2610346) | Cod sursa (job #651352)
Cod sursa(job #651352)
#include<stdio.h>
#include<stdlib.h>
#define NR 100004
FILE *fis, *rez;
int n,m,viz[NR],contor1,contor2,varf[NR];
typedef struct Nod {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(!(p=(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(fis,"%d%d",&a,&b);
if(adauga(a,b)!=0)
{printf("greseala");
return ;}
}}
void scriere ()
{for (contor1=1;contor1<=n;++contor1)
fprintf(rez,"%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;}