Pagini recente » Cod sursa (job #1395117) | Cod sursa (job #1999281) | Cod sursa (job #1532951) | Cod sursa (job #1800045) | Cod sursa (job #3326137)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
const int maxn=1e5+5;
const int maxm=5e5+5;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector<pair<int,int>> adj[maxn];
int poz[maxn];
bitset<maxm> bt;
int indg[maxn];
vector<int> topor;
void dfs(int nod) {
while (poz[nod]<adj[nod].size()) {
int u=adj[nod][poz[nod]].first;
int id=adj[nod][poz[nod]].second;
poz[nod]++;
if (bt[id])continue;
bt[id]=true;
dfs(u);
}
topor.push_back(nod);
}
void solve() {
int n,m;
cin>>n>>m;
for (int i=0;i<m;i++) {
int l,r;
cin>>l>>r;
indg[l]++;
indg[r]++;
adj[l].push_back({r,i});
adj[r].push_back({l,i});
}
for (int i=1;i<=n;i++) {
if (indg[i]%2) {
cout<<-1;
return;
}
}
dfs(1);
reverse(topor.begin(),topor.end());
topor.pop_back();
for (auto nod:topor)cout<<nod<<" ";
}
signed main() {
int t;
t=1;
while (t--)solve();
return 0;
}