Pagini recente » Cod sursa (job #442114) | Cod sursa (job #2717142) | Cod sursa (job #2722852)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
// #define f cin
// #define g cout
// code-runner.runInTerminal
vector<vector<pair<int, int>>> v;
vector<bool> bif;
stack<int> st;
vector<int> rez;
int n, m;
int main()
{
f >> n >> m;
v.resize(n + 1);
bif.resize(m + 1);
for (int i = 1, x, y; i <= m; i++)
{
f >> x >> y;
v[x].emplace_back(y, i);
v[y].emplace_back(x, i);
}
for (int i = 1; i <= n; i++)
if (v[i].size() & 1)
{
g << -1;
return 0;
}
st.push(1);
while (!st.empty())
{
int ac = st.top();
if (v[ac].empty())
{
rez.push_back(ac);
st.pop();
}
else
{
if (bif[v[ac].back().second])
v[ac].pop_back();
else
{
auto ne = v[ac].back();
st.push(ne.first);
v[ac].pop_back();
bif[ne.second] = 1;
}
}
}
if ((int)rez.size() != m + 1)
g << -1;
else
for (auto it = rez.rbegin(); it != rez.rend(); it++)
g << *it << " ";
return 0;
}