Pagini recente » Cod sursa (job #1587963) | Cod sursa (job #1686767) | Cod sursa (job #82444) | Cod sursa (job #2287448) | Cod sursa (job #148066)
Cod sursa(job #148066)
#include<stdio.h>
struct entry
{
int val;
entry * adr;
}*start[51200], *stop[51200];
void add(int a, int b)
{
entry *p;
p=new entry;
p->val=b;
p->adr=NULL;
if (start[a]==NULL)
start[a]=stop[a]=p;
else
{
stop[a]->adr=p;
stop[a]=stop[a]->adr;
}
return;
}
int n, m;
char sel [51200];
int sol[51200], count;
void dfs(int nod)
{
entry *p;
sel[nod]=1;
p=start[nod];
while(p)
{
if (!sel[p->val])
dfs(p->val);
p=p->adr;
}
++count;
sol[count]=nod;
}
int main()
{
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
int i, a, b;
scanf("%d %d", &n, &m);
for (i=1; i<=m; i++)
{
scanf("%d %d", &a, &b);
add(a, b);
}
for (i=1; i<=n; i++)
if (!sel[i])
dfs(i);
for (i=n; i>=1; i--)
printf("%d ", sol[i]);
fclose(stdout);
return 0;
}