Pagini recente » Cod sursa (job #1523319) | Cod sursa (job #1785604) | Cod sursa (job #2974548) | Cod sursa (job #1675386) | Cod sursa (job #918320)
Cod sursa(job #918320)
#include <stdio.h>
#define MAX_N 50000
#define INF 2000000000
using namespace std;
struct nod
{
int nr;
nod *next;
}*First[MAX_N];
int N,M,Grad[MAX_N],Start,Visited[MAX_N];
void Insert(int x,int y)
{
nod *q=new nod;
q->nr=y;
q->next=First[x];
First[x]=q;
}
void Read()
{
freopen("sortaret.in","r",stdin);
scanf("%d %d\n",&N,&M);
int i,x,y;
Grad[0]=INF;
for(i=1;i<=M;i++)
{
scanf("%d %d\n",&x,&y);
Insert(x,y);
Grad[y]++;
}
for(i=1;i<=N;i++)
{
if(Grad[Start]>Grad[i])
Start=i;
}
fclose(stdin);
}
void DF(int k)
{
nod *q;
Visited[k]=1;
for(q=First[k];q;q=q->next)
{
if(Visited[q->nr]==0)
DF(q->nr);
}
Insert(0,k);
}
void Write(nod *p)
{
if(p)
{
printf("%d ",p->nr);
Write(p->next);
}
else
printf("\n");
}
int main()
{
Read();
DF(Start);
freopen("sortaret.out","w",stdout);
Write(First[0]);
fclose(stdout);
return 0;
}