Pagini recente » Cod sursa (job #1923992) | Cod sursa (job #1020798) | Cod sursa (job #2510676) | Cod sursa (job #2193580) | Cod sursa (job #2421102)
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
struct cica
{
int p,h;
bool latott;
};
struct cica1
{
vector <cica> sz;
};
vector <cica1> x;
int n,m,i,a,b;
deque <int> k;
deque <int> old;
bool paros;
int euler(int akt)
{
int i=0,t,t1;
k.push_front(akt);
for(i=1;i<x[akt].sz.size();++i)
{
if(!x[akt].sz[i].latott)
{
x[akt].sz[i].latott=true;
t=x[akt].sz[i].h;
t1=x[akt].sz[i].p;
x[t1].sz[t].latott=true;
euler(x[akt].sz[i].p);
}
}
old.push_front(k.front());
k.pop_front();
}
int main()
{
cin>>n>>m;
x.resize(n+1);
for(i=1;i<=m;++i)
{
cin>>a>>b;
if(a!=b)
{
x[a].sz.push_back({b,x[b].sz.size(),false});
x[b].sz.push_back({a,x[a].sz.size()-1,false});
}
else
{
x[a].sz.push_back({b,x[b].sz.size()+1,false});
x[b].sz.push_back({a,x[a].sz.size()-1,false});
}
}
euler(1);
paros=true;
for(auto e:x)
{
if(e.sz.size()%2!=0) paros=false;
}
if(paros)
{
cout<<old.front()<<" ";
for(i=old.size()-1;i>=1;--i)
cout<<old[i]<<" ";
}
else cout<<"-1";
return 0;
}