Pagini recente » Cod sursa (job #2627735) | Cod sursa (job #2393277) | Cod sursa (job #1943100) | Cod sursa (job #3217671) | Cod sursa (job #2309655)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using cd = complex<double>;
int buf[500000 + 10] = {}, *p = buf;
int e_xor[500000 + 10];
bitset<500000 + 10> is_rem;
vector<int> vec[100000 + 10];
void dfs(int curr){
*p++ = curr;
while(!vec[curr].empty()){
if(is_rem[vec[curr].back()])
vec[curr].pop_back();
else{
is_rem[vec[curr].back()] = 1;
dfs(e_xor[vec[curr].back()] ^ curr);
}
}
}
int main(){
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n, m;
f >> n >> m;
for(int i = 0; i < m; ++i){
int x, y;
f >> x >> y;
vec[x].push_back(i);
vec[y].push_back(i);
e_xor[i] = (x ^ y);
}
dfs(1);
--p;
if(p - buf != m) g << -1 << '\n';
else while(p > buf)
g << *--p << ' ';
return 0;
}