Pagini recente » Cod sursa (job #1174681) | Cod sursa (job #1871304) | Cod sursa (job #2036572) | Cod sursa (job #1807506) | Cod sursa (job #2696715)
#include <iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<int>r;
vector<int>v[100001];
int n, m;
bool viz[500001];
int x[500001], y[500001];
void euler(int pz) {
while(v[pz].size()) {
int muchie;
muchie=v[pz].back();
v[pz].pop_back();
if(viz[muchie]==0) {
viz[muchie]=1;
int vecin;
if(x[muchie]==pz) {
vecin=y[muchie];
}
else {
vecin=x[muchie];
}
euler(vecin);
}
}
r.push_back(pz);
}
int main() {
fin>>n>>m;
for(int i=1;i<=m;i++) {
fin>>x[i]>>y[i];
v[x[i]].push_back(i);
v[y[i]].push_back(i);
}
int ok=1;
for(int i=1;i<=n;i++) {
if(v[i].size()%2!=0) {
ok=-1;
}
}
if(ok==1) {
euler(1);
for(int i=0;i<r.size()-1;i++) {
fout<<r[i]<<" ";
}
}
else {
fout<<"-1";
}
return 0;
}