Pagini recente » Cod sursa (job #1525497) | Cod sursa (job #1607286) | Cod sursa (job #2278240) | Cod sursa (job #581039) | Cod sursa (job #1793994)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct _muchie{
int a, b;
} muchie[500001]={0};
vector<int> v[100001], stack;
bool folosit[500001]={0};
int sol[500001]={0}, lg, w;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
void read(int& nr){
f>>nr;
}
int main()
{
int i, j, n, m, nod, w, a, b;
read(n);read(m);
for(i=1; i<=m; i++){
read(a);read(b);
v[a].push_back(i);
v[b].push_back(i);
muchie[i].a = a;
muchie[i].b = b;
}
for(i=1; i<=n; i++)
if(v[i].size() % 2){
g<<"-1\n";
return 0;
}
stack.push_back(1);
while(!stack.empty()){
nod = stack.back();
if(!v[nod].empty()){
w = v[nod].back();
v[nod].pop_back();
if(!folosit[w]){
folosit[w] = true;
if(muchie[w].a == nod)
stack.push_back(muchie[w].b);
else stack.push_back(muchie[w].a);
}
}
else{
sol[++lg] = nod;
stack.pop_back();
}
}
for(i=1; i<lg; i++)
g<<sol[i]<<" ";
}