Pagini recente » Cod sursa (job #2975373) | Cod sursa (job #1131827) | Cod sursa (job #1620338) | Cod sursa (job #1427452) | Cod sursa (job #2723274)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <pair <int, int>> Gr[100001];
vector <int> ans;
bitset <500001> marked;
stack <int> st;
int N, M;
int main(){
f >> N >> M;
for(int i = 1;i <= M;i++){
int x, y;
f >> x >> y;
Gr[x].emplace_back(y, i);
Gr[y].emplace_back(x, i);
}
for(int i = 1;i <= N;i++)
if(Gr[i].size() & 1){
g << -1;
return 0;
}
st.push(1);
while(!st.empty()){
int v = st.top();
while(!Gr[v].empty() && marked[Gr[v].back().second])
Gr[v].pop_back();
if(!Gr[v].empty()){
marked[Gr[v].back().second] = 1;
st.push(Gr[v].back().first);
Gr[v].pop_back();
}else{
ans.emplace_back(v);
st.pop();
}
}
for(int it : ans){
g << it << " ";
}
}