Pagini recente » Cod sursa (job #1384123) | Cod sursa (job #2511120) | Cod sursa (job #1314994) | Cod sursa (job #671589) | Cod sursa (job #1333237)
#include <stdio.h>
#include <vector>
using namespace std;
FILE *f=fopen("ciclueuler.in","r");
FILE *g=fopen("ciclueuler.out","w");
vector <int> a[100005];
int m,n,i,x,y,ok;
void fleury()
{
vector <int>::iterator it;
int i,x0,c[510000],k=0,ck=0,cop,t=0,p=0,aux,j;
x0=1;
c[1]=1;
i=0;
while(i!=m){
if (i>0)
{
ck=0;
for(it=a[x0].begin();it!=a[x0].end();++it)
{
if (*it==t){p=ck;break;}
ck++;
}
a[x0].erase(a[x0].begin()+p);
}
cop=i;
t=x0;
k=0;
for(it=a[x0].begin();it!=a[x0].end();++it){
if(a[*it].size()-1>0){i++;c[i+1]=*it;aux=*it;a[x0].erase(a[x0].begin()+k);x0=aux;break;}
k++;
}
if(i==cop) for(it=a[x0].begin();it!=a[x0].end();++it){i++;c[i+1]=*it;x0=*it;break;}
if(i==cop) break;
}
for(j=1;j<=i;j++)
fprintf(g,"%d ",c[j]);
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&x,&y);
a[x].push_back(y);
a[y].push_back(x);
}
for(i=2;i<=n;i++)
if (a[i].size()%2==1){ok=1;break;}
if (ok==1)(fprintf(g,"%d",-1));
else fleury();
fclose(g);
return 0;
}