Pagini recente » Cod sursa (job #623659) | Cod sursa (job #2229707) | Cod sursa (job #870258) | Cod sursa (job #1100185) | Cod sursa (job #2965884)
#include <fstream>
#include <vector>
#include <stack>
#define pb push_back
#define x first
#define y second
using namespace std;
using pi=pair<int, int>;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector<vector<pi>> v;
vector<int> vis;
int main()
{
int n, m, i, a, b;
cin >> n >> m;
v.resize(n + 1);
vis.resize(m + 1);
for(i = 1; i <= m; i++)
{
cin >> a >> b;
v[a].pb({b, i});
v[b].pb({a, i});
}
for(i = 1; i <= n; i++)
if(v[i].size() % 2)
{
cout << -1;
return 0;
}
stack<int> st;
vector<int> ans;
st.push(1);
while(!st.empty())
{
int u = st.top();
if(v[u].size())
{
pi e = v[u].back();
v[u].pop_back();
if(!vis[e.y])
{
vis[e.y] = 1;
st.push(e.x);
}
}
else
{
st.pop();
ans.pb(u);
}
}
for(i = 0; i < ans.size() - 1; i++)
cout << ans[i] << ' ';
return 0;
}