Pagini recente » Cod sursa (job #639799) | Cod sursa (job #3269545) | Cod sursa (job #835133) | Cod sursa (job #1542001) | Cod sursa (job #557469)
Cod sursa(job #557469)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define file_in "ciclueuler.in"
#define file_out "ciclueuler.out"
#define nmax 501001
int n,m;
int i,viz[nmax];
int x[nmax];
int y[nmax];
int nr,v[nmax];
vector<int> G[nmax];
void dfs(int nod){
vector<int> :: iterator it;
for (it=G[nod].begin();it!=G[nod].end();++it)
if (!viz[*it]){
viz[*it]=1;
dfs(x[*it]+y[*it]-nod);
}
v[++nr]=nod;
}
int main(){
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=m;++i){
scanf("%d %d", &x[i], &y[i]);
G[x[i]].push_back(i);
G[y[i]].push_back(i);
}
for (i=1;i<=n;++i)
if (G[i].size()&1){
printf("-1\n");
return 0;
}
nr=0;
dfs(1);
for (i=1;i<=nr;++i)
printf("%d ", v[i]);
return 0;
}