原题链接
考察:欧拉路径
思路:
根本不难,注意\(ans\)数组不要开小了.....
#include <iostream> #include <cstring> using namespace std; const int N = 510; int m,g[N][N],d[N],maxn,ans[N<<2],cnt,minv = N; void dfs(int u) { for(int i=minv;i<=maxn;i++) { if(g[u][i]) { g[u][i]--,g[i][u]--; dfs(i); } } ans[++cnt] = u; } int main() { scanf("%d",&m); for(int i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); g[a][b]++,g[b][a]++; d[a]++,d[b]++; maxn = max(a,maxn),minv = min(a,minv); maxn = max(b,maxn),minv = min(b,minv); } int sta = minv; for(int i=minv;i<=maxn;i++) if(d[i]&1) { sta = i; break; } dfs(sta); for(int i=cnt;i>=1;i--) printf("%d\n",ans[i]); return 0; }