Pagini recente » Cod sursa (job #2616405) | Cod sursa (job #1306869) | Cod sursa (job #1110224) | Cod sursa (job #1364925) | Cod sursa (job #3215724)
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(),x.end()
#define pb push_back
using i64=long long;
main()
{
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int n,m;
cin>>n>>m;
vector<vector<int>>g(n);
vector<bool>viz(m,false);
vector<int>xorr(m);
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
x--;
y--;
g[x].pb(i);
g[y].pb(i);
xorr[i]=x^y;
}
for(int i=0;i<n;i++)
{
if(g[i].size()&1)
{
cout<<-1;
return 0;
}
}
stack<int>sk;
sk.push(0);
vector<int>rez;
while(sk.size())
{
int acm=sk.top();
while(g[acm].size() && viz[g[acm].back()])
{
g[acm].pop_back();
}
if(g[acm].size())
{
int edge=g[acm].back();
viz[edge]=true;
int next = xorr[edge]^acm;
sk.push(next);
}
else
{
rez.pb(acm);
sk.pop();
}
}
rez.pop_back();
for(auto &c:rez)
{
cout<<c+1<<' ';
}
}