Pagini recente » Cod sursa (job #1857126) | Cod sursa (job #2986342) | Cod sursa (job #1218135) | Cod sursa (job #2745534) | Cod sursa (job #1817542)
#include <fstream>
#include <iostream>
#include <bitset>
#include <algorithm>
#include <vector>
#define NX 100010
#define pb push_back
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,x,y,nr_viz;
int deg[NX];
bitset<NX> viz;
vector<int> v[NX],A;
void euler(int p)
{
int w;
while(!v[p].empty())
{
w=v[p].back();
v[p].pop_back();
for(auto it=v[w].begin(); it!=v[w].end(); it++)
if(*it==p)
{
v[w].erase(it);
break;
}
euler(w);
}
if(!viz[p])
{
nr_viz++;
viz[p]=1;
}
A.pb(p);
}
int main()
{
fin>>n>>m;
while(m--)
{
fin>>x>>y;
v[x].pb(y);
v[y].pb(x);
deg[x]++;
deg[y]++;
}
for(int i=1; i<=n; i++)
if(deg[i]%2!=0)
{
fout<<-1;
return 0;
}
nr_viz=0;
euler(1);
if(nr_viz!=n)
{
fout<<-1;
return 0;
}
A.pop_back();
for(auto it:A)
fout<<it<<' ';
return 0;
}