Pagini recente » Cod sursa (job #1643549) | Cod sursa (job #2029719) | Cod sursa (job #2677680) | Cod sursa (job #1059415) | Cod sursa (job #1218684)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector <int> V[100013];
long n,i,j,valid,m,a,b;
int viz[100013];
long RG[100013];
void euler(long nod)
{
long key;
if (V[nod].size()>0){
cout<<nod<<" ";
key=V[nod][V[nod].size()-1];
V[nod].pop_back();
for (i=0;i<V[key].size();++i)
if (V[key][i]==nod){
V[key].erase(V[key].begin()+i);
break;
}
euler(key);
}
}
void dfs(long nod)
{
viz[nod]=1;
for (i=0;i<V[nod].size();++i)
if (viz[V[nod][i]]==0) dfs(V[nod][i]);
}
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){
dfs(1);
for (i=1;i<=n;++i)
if (viz[i]==0) {
cout<<"-1 \n";
valid=0;
break;
}
}
if (valid==1) euler(1);
return 0;
}