Pagini recente » Cod sursa (job #664615) | Cod sursa (job #1722098) | Cod sursa (job #965702) | Cod sursa (job #2736759) | Cod sursa (job #1218916)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector <int> V[100113];
long n,i,j,valid,m,a,b;
int viz[100113];
long RG[100113];
void euler(int nod)
{
int key,nr;
while(!V[nod].empty()){
for (i=0,nr=0;i<V[nod].size();++i)
if (V[nod][i]==nod) {
if (nr%2==0) cout<<nod<<" ";
++nr;
V[nod].erase(V[nod].begin()+i);
}
key=V[nod][V[nod].size()-1];
V[nod].pop_back();
cout<<key<<" ";
for (i=V[key].size()-1;i>=0;--i)
if (V[key][i]==nod){
V[key].erase(V[key].begin()+i);
break;
}
euler(key);
}
}
int main()
{
cin>>n>>m;
for (i=1;i<=m;++i) {
cin>>a>>b;
V[a].push_back(b);
V[b].push_back(a);
++RG[a];
++RG[b];
}
valid=1;
for (i=1;i<=n;++i)
if (RG[i]%2!=0){
cout<<"-1 \n";
valid=0;
break;
}
if (valid==1) euler(1);
return 0;
}