Pagini recente » Cod sursa (job #2563663) | Cod sursa (job #3218019) | Cod sursa (job #1718885) | Cod sursa (job #2914244) | Cod sursa (job #1593698)
#include <stdio.h>
#include <vector>
using namespace std;
int g[100002];
vector<int> v[100002];
void ciclue(int x)
{
int y;
vector<int>::iterator itr,fin;
while(!v[x].empty())
{
y=v[x].back();
v[x].pop_back();
itr=v[y].begin();
fin=v[y].end();
while(itr!=fin)
{
if(*itr==x) {v[y].erase(itr);break;}
itr++;
}
ciclue(y);
printf("%d ",x);
}
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
int n,m,i,x,y;
char ok=1;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
g[x]++;
g[y]++;
}
i=1;
while(ok && (i<=n))
{
if(g[i]%2==1||g[i]==0) ok=0;
i++;
}
if(ok==0) {printf("-1");return 0;}
ciclue(1);
return 0;
}