Pagini recente » Cod sursa (job #1190812) | Cod sursa (job #1053539) | Cod sursa (job #1038779) | Cod sursa (job #1823591) | Cod sursa (job #755392)
Cod sursa(job #755392)
#include<cstdio>
#include<vector>
using namespace std;
int m1,l,x,y,i,n,m,ul,v,ap[500002];
vector < int > h[100002];
vector < int > ::iterator it;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
m1=m;
for(i=1;i<=m;i++)
{
scanf("%d",&x);
scanf("%d",&y);
if(x!=y)
{
h[x].push_back(y);
h[y].push_back(x);
}
else
{
ap[x]++;
m1--;
}
}
for(i=1;i<=n;i++)
if(h[i].size()%2==1)
{
printf("-1\n");
return 0;
}
l=1;
ul=1;
/*for(i=1;i<=n;i++)
{
printf("%d: ",i);
for(it=h[i].begin();it!=h[i].end();it++)
printf("%d ",*it);
printf("\n");
}
printf("\n\n");*/
while(l<=m)
{
if(l==1)
{
ul=1;
printf("1 ");
if(ap[1]>0)
{
for(i=1;i<=ap[1];i++)
printf("1 ");
ap[1]=0;
l++;
}
}
else
if(!h[ul].empty())
{
v=h[ul].back();
printf("%d ",v);
if(ap[v]>0)
{
for(i=1;i<=ap[v];i++)
printf("%d ",v);
ap[v]=0;
l++;
}
h[ul].pop_back();
for(it=h[v].begin();it!=h[v].end();it++)
if(*it==ul)
{
h[v].erase(it);
break;
}
ul=v;
/*for(i=1;i<=n;i++)
{
printf("%d: ",i);
for(it=h[i].begin();it!=h[i].end();it++)
printf("%d ",*it);
printf("\n");
}
printf("\n\n");*/
}
l++;
}
return 0;
}