Pagini recente » Cod sursa (job #1714044) | Cod sursa (job #2783397) | Cod sursa (job #3153122) | Cod sursa (job #3343724) | Cod sursa (job #2377054)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
struct euler
{
int y, muchie;
};
int n,m;
vector<euler> v[100005];
stack<int> s;
bool used[500005];
vector<int> sol;
int main()
{
in>>n>>m;
for (int i = 1; i <= m; ++i)
{
int x,y;
in>>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) {
out<<-1<<'\n';
return 0;
}
}
s.push(1);
while (!s.empty())
{
int nod = s.top();
if (!v[nod].empty())
{
int vecin = v[nod].back().y, muc = v[nod].back().muchie;
v[nod].pop_back();
if (!used[muc])
{
used[muc] = true;
s.push(vecin);
}
}
else
{
sol.push_back(nod);
s.pop();
}
}
for (int i = 0; i < sol.size() - 1; ++i)
out<<sol[i]<<" ";
return 0;
}