Pagini recente » Cod sursa (job #2149477) | Cod sursa (job #211329) | Cod sursa (job #1665639) | Cod sursa (job #321043) | Cod sursa (job #2737053)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int N, M;
vector <pair <int, int>> v[100005];
stack <int> st;
int entered[100005];
bool vis[500005];
int main()
{
fin >> N >> M;
for(int i = 1; i <= M; i++)
{
int x, y;
fin >> x >> y;
v[x].push_back({y, i});
v[y].push_back({x, i});
}
for(int i = 1; i <= N; i++)
if(v[i].size() % 2 == 1)
{
fout << -1;
return 0;
}
st.push(1);
vector <int> ans;
while(!st.empty())
{
int vf = st.top();
if(entered[vf] == v[vf].size())
{
st.pop();
ans.push_back(vf);
continue;
}
if(vis[v[vf][entered[vf]].second] == false)
{
st.push(v[vf][entered[vf]].first);
vis[v[vf][entered[vf]].second] = true;
}
entered[vf]++;
}
for(int i = ans.size() - 1; i >= 1; i--)
fout << ans[i] << " ";
return 0;
}