Pagini recente » Cod sursa (job #1588887) | Cod sursa (job #501264) | Cod sursa (job #5186) | Cod sursa (job #1046501) | Cod sursa (job #650859)
Cod sursa(job #650859)
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int info;
struct node *next;
} node;
node *L[100001];
int length,viz[50001],postordine[50001],N,M;
void DFS(int x)
{
viz[x]=1;
node* p;
if(!(p=(node*)calloc(1,sizeof(node))))
return;
for(p=L[x];p!=NULL;p=p->next)
if(!viz[p->info])
DFS(p->info);
length++;
postordine[length]=x;
}
int main()
{
int i,j,k;
node *p;
FILE *fin,*fout;
fin=fopen("sortaret.in","r");
fout=fopen("sortaret.out","w");
fscanf(fin,"%d %d",&N,&M);
for(k=1;k<=M;k++)
{
fscanf(fin,"%d %d",&i,&j);
p=(node*)calloc(1,sizeof(node)); //se adauga j in lista vecinilor lui i
p->info=j;
p->next=L[i];
L[i]=p;
}
fclose(fin);
for(i=1;i<=N;i++)
if(!viz[i])
DFS(i);
for(i=N;i>=1;i--)
fprintf(fout,"%d ",postordine[i]);
system("PAUSE");
return 0;
}