Pagini recente » Cod sursa (job #119519) | Cod sursa (job #393801) | Cod sursa (job #468225) | Cod sursa (job #1094863) | Cod sursa (job #3005726)
#include <bits/stdc++.h>
#include <fstream>
#define cin fin
#define cout fout
using namespace std;
ifstream cin ("ciclueuler.in");
ofstream cout ("ciclueuler.out");
struct element
{
int a,b;
bool uz;
};
element muchie[500008];
vector<int>G[100008];
vector<int>stackk;
vector<int>sol;
int k,muc,n,m,i,a,b,frec[100008];
void euler(int nod)
{
stackk.push_back(nod);
while(!stackk.empty())
{
k=stackk.back();
if(G[k].empty())
{
sol.push_back(k);
stackk.pop_back();
}
else
{
muc=G[k].back();
G[k].pop_back();
if(muchie[muc].uz==1)
{
muchie[muc].uz=0;
if(muchie[muc].a==k)
stackk.push_back(muchie[muc].b);
else
stackk.push_back(muchie[muc].a);
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(i=1; i<=m; i++)
{
cin>>a>>b;
G[a].push_back(i);
G[b].push_back(i);
muchie[i]= {a,b,1};
frec[a]++;
frec[b]++;
}
for(i=1; i<=n; i++)
{
if(frec[i]==0 || frec[i]%2==1)
{
cout<<"-1";
exit(0);
}
}
euler(1);
sol.pop_back();
for(auto i:sol)
cout<<i<<" ";
return 0;
}