代码如下:
#include<bits/stdc++.h>
using namespace std;
#define maxn 505
int g[maxn][maxn];
int du[maxn];
int circuit[maxn];
int n,e,circuitpos,i,j,x,y,start;
void find_circuit(int i){
int j;
for(j=1;j<=n;j++)
if(g[i][j] >= 1){
g[j][i]--;
g[i][j]--;
find_circuit(j);
}
circuit[++circuitpos] = i;
}
int main() {
memset(g,0,sizeof(g));
cin >> e;
for(i = 1; i <= e; i++){
cin >>x >>y;
g[y][x]++;
g[x][y]++;
du[x]++;
du[y]++;
n=max(n, max(x, y));
}
start = 1;
for(i = 1; i <= n; i++)
if(du[i]%2 == 1){
start = i;
break;
}
circuitpos = 0;
find_circuit(start);
for(i = circuitpos; i >= 1; i--)
cout << circuit[i] << '\n';
return 0;
}