Pagini recente » Cod sursa (job #1152404) | Cod sursa (job #3268374) | Cod sursa (job #885815) | Cod sursa (job #2872017) | Cod sursa (job #1782265)
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y,i,ok,nr,ciclu[600000];
vector <int> v[100006];
void sterge_muchie(int x, int y)
{
int i;
for(i=0; i<v[x].size();i++)
if(v[x][i]==y)
{
swap(v[x][i],v[x][v[x].size()-1]);
v[x].pop_back();
return ;
}
}
void euler(int nod)
{
int vecin;
while(v[nod].size()>0)
{
vecin=v[nod][0];
sterge_muchie(nod,vecin);
sterge_muchie(vecin,nod);
euler(vecin);
}
nr++;
ciclu[nr]=nod;
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
}
for(i=1;i<=n;i++)
if(v[i].size()%2==1)
{
printf("-1");
ok=1;
break;
}
if(ok==0)
{
euler(1);
for(i=1;i<=nr;i++)
printf("%d ",ciclu[i]);
}
return 0;
}