Pagini recente » Cod sursa (job #466437) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2853473) | Cod sursa (job #3344121)
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define ll long long
const int NMAX = 1e5;
int n,m;
vector<pii>v[NMAX+1];
int rang[NMAX+1];
bitset<NMAX+1>vap;
vector<int>euler;
void read(){
cin >> n >> m;
for(int i = 1; i <= m; i++){
int st,dr;
cin >> st >> dr;
v[st].push_back({dr,i});
v[dr].push_back({st,i});
rang[st]++;
rang[dr]++;
}
}
void find_eulerian_path(int nod){
while(!v[nod].empty()){
auto curr = v[nod].back();
v[nod].pop_back();
if(vap[curr.second] == 0){
vap[curr.second] = 1;
find_eulerian_path(curr.first);
}
}
euler.push_back(nod);
}
void solve(){
for(int i = 1; i <= n; i++){
if(rang[i] & 1){
cout << -1;
return;
}
}
find_eulerian_path(1);
for(int i : euler)
cout << i << ' ';
}
int main() {
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
read();
solve();
return 0;
}