Pagini recente » Cod sursa (job #1018989) | Cod sursa (job #3149370) | Cod sursa (job #2335493) | Cod sursa (job #2850776) | Cod sursa (job #547317)
Cod sursa(job #547317)
#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;
}