Pagini recente » Cod sursa (job #138485) | Cod sursa (job #1596200) | Cod sursa (job #965731) | Cod sursa (job #3030589) | Cod sursa (job #1664729)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#define MaxN 500001
int n, m;
vector<int> G[MaxN], sol;
pair<int,int> E[MaxN];
bool viz[MaxN], ok = true;
void Df(int i) {
for ( const auto y : G[i] )
if ( !viz[y] ) {
viz[y] = true;
Df(E[y].first + E[y].second - i);
}
sol.push_back(i);
}
int main() {
fin >> n >> m;
for ( int i = 1, x, y; i <= m; ++i ) {
fin >> x >> y;
G[x].push_back(i);
G[y].push_back(i);
E[i] = {x, y};
}
for ( int i = 1; i <= n; ++i )
if ( G[i].size() % 2 )
ok = false;
if ( ok ) {
Df(1);
for ( int i = 0; i < sol.size() - 1; ++i )
fout << sol[i] << ' ';
}
else
fout << "-1\n";
fin.close();
fout.close();
return 0;
}