Pagini recente » Cod sursa (job #1374387) | Cod sursa (job #1428530) | Cod sursa (job #2799802) | Cod sursa (job #1215183) | Cod sursa (job #2926131)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
const int MMAX = 5e5;
ifstream fin( "ciclueuler.in" );
ofstream fout( "ciclueuler.out" );
struct muchie{
int nod, ind;
};
bool viz[MMAX];
vector <muchie> edges[NMAX+1];
vector <int> cycle;
void dfs( int node ) {
int i;
for( i = 0; i < edges[node].size(); i++ ) {
if( !viz[edges[node][i].ind] ) {
viz[edges[node][i].ind] = 1;
dfs( edges[node][i].nod );
}
}
cycle.push_back( node );
}
int main() {
int n, m, i, a, b;
fin >> n >> m;
for( i = 0; i < m; i++ ) {
fin >> a >> b;
edges[a].push_back( { b, i } );
edges[b].push_back( { a, i } );
}
dfs( 1 );
i = 0;
while( i < m && viz[i] )
i++;
if( i == m ) {
while( cycle.size() > 1 ) {
fout << cycle.back() << " ";
cycle.pop_back();
}
}
else
fout << -1;
return 0;
}