Pagini recente » Cod sursa (job #900125) | Cod sursa (job #2916220) | Cod sursa (job #952062) | Cod sursa (job #1400500) | Cod sursa (job #305998)
Cod sursa(job #305998)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VMAX 50010
#define EMAX 100010
int start[EMAX],target[EMAX],prev[EMAX],last[VMAX],list[VMAX];
char viz[VMAX];
int edgeNo,nodeNo,push;
void dfs(int node)
{
viz[node]=1;
int i;
for (i=last[node];i>=0;i=prev[i])
if (!viz[target[i]]) dfs(target[i]);
list[push--]=node+1;
}
int main()
{
int i,x,y;
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d %d",&nodeNo,&edgeNo);
for (i=0;i<nodeNo;i++) last[i]=-1;
for (i=0;i<edgeNo;i++)
{
scanf("%d %d",&x,&y);x--;y--;
start[i]=x;target[i]=y;prev[i]=last[x];last[x]=i;
}
push=nodeNo-1;
for (i=0;i<nodeNo;i++)
if (!viz[i]) dfs(i);
for (i=push+1;i<nodeNo;i++) printf("%d ",list[i]);
fclose(stdout);
return 0;
}