Pagini recente » Cod sursa (job #2802172) | Cod sursa (job #2447390) | Cod sursa (job #2512102) | Cod sursa (job #2155762) | Cod sursa (job #2711582)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m;
vector < int > v[100005];
vector < int > sol;
int a,b;
int gr[100005];
int vizmuchii[500005];
stack < int > s;
int verify_odd() {
for (int i=1;i<=n;i++) {
if (gr[i]%2==1 || gr[i]==0) {
return 0;
}
}
return 1;
}
void euler_cycle() {
s.push(1);
while (s.empty()==0) {
int nod = s.top();
while (v[nod].empty()==0) {
int nodtoviz = *v[nod].begin();
v[nod].erase(v[nod].begin());
v[nodtoviz].erase(find(v[nodtoviz].begin(),v[nodtoviz].end(),nod));
s.push(nodtoviz);
nod = nodtoviz;
}
g << s.top() << " ";
s.pop();
}
}
int main()
{
f >> n >> m;
for (int i=1;i<=m;i++) {
f >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
gr[a]++; gr[b]++;
}
if (verify_odd()==0) {
g << -1;
}
else {
euler_cycle();
}
return 0;
}