Pagini recente » Cod sursa (job #9788) | Cod sursa (job #190362) | Cod sursa (job #445604) | Cod sursa (job #758715) | Cod sursa (job #144669)
Cod sursa(job #144669)
#include <stdio.h>
#include <fstream>
using namespace std;
#define in "sortaret.in"
#define out "sortaret.out"
#define dim 50001
int N, M;
char Sel[dim];
typedef struct NOD {
int vf;
NOD* next;
} *PNOD;
PNOD graph[dim], Stiva;
void Add(int,int);
void Push(int);
void DF(int);
int main()
{
int X, Y;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
memset(Sel,'0',sizeof(Sel));
scanf("%d%d", &N, &M);
for ( int i = 1; i <= M; i++ )
scanf("%d%d", &X, &Y), Add(X,Y), Add(Y,X);
for ( int i = 1; i <= N; i++ )
if ( Sel[i] != '1' ) DF(i);
for ( PNOD q = Stiva; q; q=q->next )
printf("%d ", q->vf);
}
void DF(int nod)
{
Sel[nod] = '1';
for ( PNOD q = graph[nod]; q; q=q->next )
if ( Sel[q->vf] != '1' ) DF(q->vf);
Push(nod);
}
void Add(int X, int Y)
{
NOD* p = new NOD;
p->vf = Y;
p->next = graph[X];
graph[X] = p;
}
void Push(int K)
{
if ( !Stiva )
{
Stiva = new NOD;
Stiva->vf = K;
Stiva->next = 0;
}
else
{
NOD* p = new NOD;
p->vf = K;
p->next = Stiva;
Stiva = p;
}
}