Pagini recente » Cod sursa (job #3256672) | Cod sursa (job #895916) | Cod sursa (job #2052613) | Cod sursa (job #2857753) | Cod sursa (job #1138266)
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#define nmax 100005
#define mmax 500005
using namespace std;
multiset <int> v[nmax];
vector <int> sol;
int n, m, a, b, deg[nmax];
bool has = true;
void euler(int x) {
while(!v[x].empty()) {
int w = *v[x].begin();
v[x].erase(v[x].begin());
v[w].erase(v[w].find(x));
euler(w);
}
sol.push_back(x);
}
int main() {
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
f>>n>>m;
for(int i=1; i<=m; i++) {
f>>a>>b;
deg[a]++;
deg[b]++;
v[a].insert(b);
v[b].insert(a);
}
for(int i=1; i<=n; i++) if(deg[i] % 2 == 1) has = false;
if(has) {
euler(1);
for(int i=0; i<sol.size(); i++) g<<sol[i]<<" ";
g<<"\n";
}
else g<<"-1\n";
return 0;
}