Pagini recente » Cod sursa (job #2498831) | Cod sursa (job #674615) | Cod sursa (job #1041633) | Cod sursa (job #271862) | Cod sursa (job #308809)
Cod sursa(job #308809)
#include<stdio.h>
#define N 100005
int n,m,*a[N],*poz[N],d[N],c[5*N];
int nr=0;
void citire(){
int x,y;
scanf("%d%d",&n,&m);
while(m--){
scanf("%d%d",&x,&y);
d[x]++;
if(x!=y)
d[y]++;
}
fclose(stdin);
}
void aloc(){
int i;
for(i=1;i<=n;++i){
a[i]=new int [1+d[i]];
a[i][0]=0;
poz[i]=new int [1+d[i]];
poz[i][0]=0;
}
}
void completez(){
int i,x,y;
freopen("ciclueuler.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i){
scanf("%d%d",&x,&y);
a[x][++a[x][0]]=y;
if(x!=y)
{
a[y][++a[y][0]]=x;
poz[x][a[x][0]]=a[y][0];
poz[y][a[y][0]]=a[x][0];
}
}
}
void euler(int x){
int i,y;
for(i=1;i<=a[x][0];++i){
y=a[x][i];
if(y==0)
continue;
a[x][i]=0;
if(x!=y)
a[y][poz[x][i]]=0;
euler(y);
}
c[++nr]=x;
}
/*
void afisare()
{
int i,j;
for(i=1;i<=n;++i)
{
printf("%d:\t",i);
for(j=1;j<=a[i][0];++j)
printf("(%d,poz=%d) ",a[i][j],poz[i][j]);
printf("\n");
}
}
*/
int main(){
int i;
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
citire();
aloc();
completez();
//afisare();
euler(1);
if(c[1]!=c[nr] || nr!=m+1)
printf("-1");
else
for(i=1;i<=m;++i)
printf("%d ",c[i]);
fclose(stdin);
fclose(stdout);
return 0;
}