Pagini recente » Cod sursa (job #590361) | Cod sursa (job #1843494) | Istoria paginii utilizator/cazaceanuandrei | Cod sursa (job #1843505) | Cod sursa (job #1724723)
///Speram ca e conex baiatul...
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
int n, m;
int d[NMAX];
vector<int> g[NMAX];
vector<int> s;
void euler(int u) {
int v;
while(!g[u].empty()) {
v = g[u].back();
g[u].pop_back();
g[v].erase( find(g[v].begin(), g[v].end(), u) ); ///In apararea mea, cu liste era tot O(n)
euler(v);
}
s.push_back(u);
}
int main(void) {
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
int a, b, anf;
scanf("%d%d",&n,&m);
for(int i=1; i<=m; ++i) {
scanf("%d%d",&a,&b);
g[a].push_back(b);
g[b].push_back(a);
++d[a];
++d[b];
}
for(int i=1; i<=n; ++i) {
if(d[i]%2) {
printf("-1\n");
return 0;
}
if(d[i])
anf = i;
}
euler(anf);
for(int i=1; i<s.size(); ++i)
printf("%d ",s[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}