Pagini recente » Cod sursa (job #657907) | Cod sursa (job #1570872) | Cod sursa (job #963936) | Cod sursa (job #1940525) | Cod sursa (job #144040)
Cod sursa(job #144040)
#include <stdio.h>
#define ALB 0
#define GRI 1
#define NEGRU 2
typedef struct nod {
int vf;
nod * next;
} *PNOD, NOD;
PNOD L[5005];
PNOD adresa;
int color[5005];
int N, M;
void Read();
void DF(int);
void Push(int);
void Add( int i, int j);
void Write();
int main()
{
Read();
int i;
for ( i = 1; i <= N; ++i )
if ( color[i] == ALB )
DF( i );
Write();
return 0;
}
void Read()
{
freopen( "sortaret.in" , "r", stdin );
scanf( "%d%d", &N, &M );
int X, Y;
for ( ; M > 0; M-- )
{
scanf( "%d%d", &X, &Y);
Add(X,Y);
}
}
void Add( int i, int j)
{
PNOD p = new NOD;
p->vf = j;
p->next = L[i];
L[i] = p;
}
void DF( int nod )
{
color[nod] = GRI;
for ( PNOD p = L[nod]; p; p = p->next )
if ( color[p->vf] == ALB )
DF( p->vf );
color[nod] = NEGRU;
Push( nod );
}
void Push( int nod )
{
PNOD p = new NOD;
p->vf = nod;
p->next = adresa;
adresa = p;
}
void Write()
{
freopen( "sortaret.out", "w", stdout );
for ( PNOD p = adresa; p; p = p->next )
printf( "%d ", p->vf );
}