/*
Copyright 2011 Marek "p2004a" Rusinowski
Finding Hamilton cycle
*/
#include <cstdio>
#include <vector>
#include <stack>
#define MAXN 1000
std:: vector < int > edges[ MAXN] ;
std:: stack < int > cycle;
bool visited[ MAXN] ;
int n, m;
bool dfs( int v) {
visited[ v] = true ;
cycle.push ( v) ;
for ( unsigned i = 0 ; i < edges[ v] .size ( ) ; ++ i) {
if ( edges[ v] [ i] == 0 && ( int ) cycle.size ( ) == n) {
return true ;
}
if ( ! visited[ edges[ v] [ i] ] ) {
if ( dfs( edges[ v] [ i] ) ) {
return true ;
}
}
}
visited[ v] = false ;
cycle.pop ( ) ;
return false ;
}
int main( ) {
int a, b;
scanf ( "%d %d" , & n, & m) ;
for ( int i = 0 ; i < m; ++ i) {
scanf ( "%d %d" , & a, & b) ;
edges[ -- a] .push_back ( -- b) ;
edges[ b] .push_back ( a) ;
}
if ( dfs( 0 ) ) {
while ( ! cycle.empty ( ) ) {
printf ( "%d " , cycle.top ( ) + 1 ) ;
cycle.pop ( ) ;
}
printf ( "\n " ) ;
} else {
printf ( "false\n " ) ;
}
return 0 ;
}
LyoKICBDb3B5cmlnaHQgMjAxMSBNYXJlayAicDIwMDRhIiBSdXNpbm93c2tpCiAgRmluZGluZyBIYW1pbHRvbiBjeWNsZQoqLwojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CgojZGVmaW5lIE1BWE4gMTAwMAoKc3RkOjp2ZWN0b3I8aW50PiBlZGdlc1tNQVhOXTsKc3RkOjpzdGFjazxpbnQ+IGN5Y2xlOwpib29sIHZpc2l0ZWRbTUFYTl07CmludCBuLCBtOwoKYm9vbCBkZnMoaW50IHYpIHsKICB2aXNpdGVkW3ZdID0gdHJ1ZTsKICBjeWNsZS5wdXNoKHYpOwogIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlZGdlc1t2XS5zaXplKCk7ICsraSkgewogICAgaWYgKGVkZ2VzW3ZdW2ldID09IDAgJiYgKGludCljeWNsZS5zaXplKCkgPT0gbikgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmICghdmlzaXRlZFtlZGdlc1t2XVtpXV0pIHsKICAgICAgaWYgKGRmcyhlZGdlc1t2XVtpXSkpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogIH0KICB2aXNpdGVkW3ZdID0gZmFsc2U7CiAgY3ljbGUucG9wKCk7CiAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKICBpbnQgYSwgYjsKICBzY2FuZigiJWQgJWQiLCAmbiwgJm0pOwogIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgKytpKSB7CiAgICBzY2FuZigiJWQgJWQiLCAmYSwgJmIpOwogICAgZWRnZXNbLS1hXS5wdXNoX2JhY2soLS1iKTsKICAgIGVkZ2VzW2JdLnB1c2hfYmFjayhhKTsKICB9CiAgaWYgKGRmcygwKSkgewogICAgd2hpbGUgKCFjeWNsZS5lbXB0eSgpKSB7CiAgICAgIHByaW50ZigiJWQgIiwgY3ljbGUudG9wKCkgKyAxKTsKICAgICAgY3ljbGUucG9wKCk7CiAgICB9CiAgICBwcmludGYoIlxuIik7CiAgfSBlbHNlIHsKICAgIHByaW50ZigiZmFsc2VcbiIpOwogIH0KICByZXR1cm4gMDsKfQo=
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:36: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout