Pagini recente » Cod sursa (job #1133298) | Cod sursa (job #2897751) | Cod sursa (job #1543891) | Cod sursa (job #2633614) | Cod sursa (job #1641133)
#include <fstream>
#include <vector>
#include <stack>
#define oo 1111111
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
bool vm[500005];
vector< pair<int, int> > L[100005];
vector< pair<int, int> > M[500005];
stack<int> s;
vector<int> ans;
void df(int v) {
for(int i = 0; i < L[v].size(); i ++) {
int cur = L[v][i].first;
int muc = L[v][i].second;
if(!vm[muc]) {
vm[muc] = true;
df(cur);
}
}
ans.push_back(v);
}
int main()
{
int n, m, x, y; f >> n >> m;
for(int i = 0; i < m; i ++) {
f >> x >> y;
L[x].push_back({y, i});
L[y].push_back({x, i});
M[i].push_back({x, y});
}
for(int i = 1; i <= n; i ++) {
if(L[i].size() & 1) {
g << "-1\n";
return 0;
}
}
df(1);
if(ans.size() != m + 1) {
g << "-1\n";
return 0;
}
for(int i = ans.size() - 1; i > 0; i --) g << ans[i] << " ";
g << "\n";
return 0;
}