Pagini recente » Borderou de evaluare (job #2076278) | Cod sursa (job #380750) | Cod sursa (job #6401) | Cod sursa (job #2259816) | Cod sursa (job #287888)
Cod sursa(job #287888)
#include <stdio.h>
#define Nmax 50001
struct nod{
int info;
nod *next;
};
nod *p[Nmax];
nod *list;
int n,m,viz[Nmax];
void adauga(int,int),sorteaza(),adl(int),DF(int);
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
int i,x,y;
scanf("%d%d",&n,&m);
for(;m>=1;--m)
{
scanf("%d%d",&x,&y);
adauga(x,y);
}
sorteaza();
nod *current=list;
for(;current;current=current->next)
printf("%d ",current->info);
return 0;
}
void adauga(int i,int k)
{
nod *current=new nod;
current->info=k;
current->next=p[i];
p[i]=current;
}
void sorteaza()
{
int i;
for(i=1;i<=n;++i)
if(viz[i]==0)
DF(i);
}
void adl(int i)
{
nod *current=new nod;
current->info=i;
current->next=list;
list=current;
}
void DF(int i)
{
viz[i]=1;
nod *current=p[i];
for(;current;current=current->next)
if(viz[current->info]==0)
DF(current->info);
adl(i);
}