应该不是空间问题
#include<bits/stdc++.h>
using namespace std;
int g[505][505];
int path[1026];
int du[505];
int f,flag=1;
int min0=1000,min1=1000,min2=1000;
int max0,max1;
void print()
{ for(int i=1;i<=f+1;i++)
cout<<path[i]<<endl;
}
void dfs(int i,int step)
{ if(flag)
{ path[step]=i;
if(step==f+1)
{ print();
flag=0;
return ;
}
for(int j=1;i<=max0&&flag;j++)
if(g[i][j])
{ g[i][j]--;
g[j][i]--;
dfs(j,step+1);
}
}
return ;
}
int main()
{ cin>>f;
for(int i=1;i<=f;i++)
{ int x,y;
cin>>x>>y;
if(x<y) min1=x;
else min1=y;
if(min0>min1) min0=min1;
g[x][y]++;
g[y][x]++;
du[x]++;du[y]++;
max0=max(max0,max(x,y));
}
for(int i=1;i<=500;i++)
if(du[i]%2==1)
if(min2>i)
{ min2=i;
break;
}
if(min2!=1000) dfs(min2,1);
else dfs(min0,1);
return 0;
}