Pagini recente » Cod sursa (job #3232754) | Cod sursa (job #1270230) | Cod sursa (job #861210) | Cod sursa (job #2095597) | Cod sursa (job #1952611)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#include <stack>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int> vec[100003];
int intr[100003];
stack<int> rez;
bool rem[500003];
pair<int, int> edg[500003];
void eul(int nod) {
int crr;
pair<int, int> T;
while(!vec[nod].empty()) {
T = edg[vec[nod].back()];
if(rem[vec[nod].back()]) {
vec[nod].pop_back();
continue;
}
rem[vec[nod].back()] = true;
if(T.first == nod)
crr = T.second;
else
crr = T.first;
eul(crr);
}
rez.push(nod);
}
int main() {
int n,m;
in >> n >> m;
int x,y;
for(int i = 1; i <= m; i++) {
in >> x >> y;
vec[x].push_back(i);
vec[y].push_back(i);
edg[i] = {x, y};
intr[x]++;
intr[y]++;
}
for(int i = 1; i <= n; i++) {
if(intr[i]%2 == 1) {
out << -1;
return 0;
}
}
eul(1);
while(!rez.empty()) {
out << rez.top() << " ";
rez.pop();
}
return 0;
}