Pagini recente » Cod sursa (job #2090466) | Cod sursa (job #1605919) | Cod sursa (job #3316739) | Cod sursa (job #550928) | Cod sursa (job #3342124)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
vector<int>v[NMAX+1];
unordered_map<int,int>vap[NMAX+1];
int n,m,k;
int ans[5*NMAX+1];
int rang[NMAX+1];
void read()
{
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
int st,dr;
cin >> st >> dr;
v[st].push_back(dr);
v[dr].push_back(st);
vap[st][dr]++;
vap[dr][st]++;
rang[st]++;
rang[dr]++;
}
}
void dfs(int nod)
{
for(int i : v[nod])
{
if(vap[nod][i] > 0)
{
vap[nod][i]--;
vap[i][nod]--;
dfs(i);
}
}
ans[++k] = nod;
}
void solve()
{
for(int i = 1; i <= n; i++)
if(rang[i] % 2 != 0)
{
cout << -1;
return;
}
dfs(1);
if(k != m+1)
cout << -1;
else
{
for(int i = 1; i <= k; i++)
cout << ans[i] << ' ';
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
read();
solve();
}