Pagini recente » Cod sursa (job #1282373) | Cod sursa (job #2772493) | Cod sursa (job #3243839) | Cod sursa (job #270795) | Cod sursa (job #2718131)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout("ciclueuler.out");
int n, m, used[500005], a[500005], b[500005], w[100005];
vector <int> v[100005], sol;
stack <int> s;
int main()
{
cin >> n >> m;
for(int i = 1; i <= m; ++i)
{
cin >> a[i] >> b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
++w[a[i]];
++w[b[i]];
}
for(int i = 1; i <= n; ++i)
{
if(w[i] % 2 != 0)
{
cout << -1 << '\n';
return 0;
}
}
s.push(1);
while(!s.empty())
{
int x, y;
x = s.top();
if(v[x].empty())
{
s.pop();
sol.push_back(x);
}
else
{
y = v[x].back();
v[x].pop_back();
if(used[y] == false)
{
s.push(x == b[y] ? a[y] : b[y]);
used[y] = true;
}
}
}
for(auto it = sol.begin(); it + 1 != sol.end(); ++it)
cout << *it << ' ';
cout << '\n';
return 0;
}