Pagini recente » Cod sursa (job #2706329) | Cod sursa (job #1287108) | Cod sursa (job #216777) | Cod sursa (job #944423) | Cod sursa (job #2121051)
#include <bits/stdc++.h>
using namespace std;
int const NMAX=100000;
int const MMAX=500000;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector <int> nodes[NMAX];
vector <int> sol;
stack <int> stiva;
int main(){
int n, m, n1, n2, i;
in >> n >> m;
for (i=1; i<=m; i++){
in >> n1 >> n2;
nodes[n1].push_back(n2);
nodes[n2].push_back(n1);
}
for (i=1; i<=n; i++)
if (nodes[i].size()&1){
out << -1;
return 0;
}
stiva.push(1);
while(!stiva.empty()){
int nod = stiva.top();
if (!nodes[nod].empty()){
int fiu = nodes[nod].back();
stiva.push(fiu);
nodes[nod].pop_back();
nodes[fiu].erase(find(nodes[fiu].begin(), nodes[fiu].end(), nod));
}
else{
sol.push_back(stiva.top());
stiva.pop();
}
}
sol.pop_back();
for (auto x : sol)
out << x << ' ';
}