Pagini recente » Cod sursa (job #2388649) | Cod sursa (job #400702) | Cod sursa (job #2405204) | Cod sursa (job #2324726) | Cod sursa (job #2119877)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
vector <int> lista[100010];
int n,vc[100010],m;
void citire()
{
int i,n1,n2;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&n1,&n2);
vc[n1]++;
vc[n2]++;
lista[n1].push_back(n2);
lista[n2].push_back(n1);
}
}
int st[100010],sol[100010];
void eulerian()
{ int i,pp,j,k,nod,urm,cate=0;
pp=1;
for( i=1;i<=n;i++)
if(vc[i]%2==1)
pp=0;
if(pp==0)
printf("-1");
else
{
///i=0;
k=1;
st[k]=1;
while(k>0)
{
nod=st[k];
if(lista[nod].size()>=1)
{
urm=lista[nod][lista[nod].size()-1];
k++;
st[k]=urm;
lista[nod].pop_back();
lista[urm].erase(find(lista[urm].begin(),lista[urm].end(),nod));
}
else
{
///if(cate<m)
///{
cate++;
sol[cate]=st[k];
k--;
///}
}
}
for(int j=1;j<cate;j++)
printf("%d ",sol[j]);
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
citire();
eulerian();
return 0;
}