Pagini recente » Cod sursa (job #891020) | Cod sursa (job #1461186) | Cod sursa (job #2806058) | Cod sursa (job #1588343) | Cod sursa (job #1194425)
#include <iostream>
#include <fstream>
#include <bitset>
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;
int r[500001];
int v[10051][10051];
vector <int>nd[10051];
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
inline void afisare(int nr)
{
for(int i=1;i<=nr;i++) fout<<r[i]<<" ";
exit(0) ;
}
inline void euler(int i,int nod,int nr)
{
if(i!=nr+1)
{
for(vector <int>::iterator it=nd[nod].begin();it!=nd[nod].end();it++)
{ if(v[nod][*it])
{
r[i]=*it;
v[nod][*it]--;
if(nod!=*it) v[*it][nod]--;
euler(i+1,*it,nr);
v[nod][*it]++;
if(nod!=*it) v[*it][nod]++;
}
}
}
else if(v[nod][1])
{
afisare(nr);
}
}
int main()
{
int n,m,x,i=1,y;
fin>>n>>m;
while(i<=m)
{ fin>>x>>y;
nd[x].push_back(y);
nd[y].push_back(x);
v[x][y]++;
if(x!=y) v[y][x]++;
i++;
}
r[1]=1;
euler(2,1,m);
fout<<"-1";
}