1375:騎馬修柵欄(fence)
阿新 • • 發佈:2021-10-21
題解參考至shake_jake
本來想優化優化的,然後就...
提交了18次┭┮﹏┭┮(至死也沒明白為什麼wrong了?)。
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; const int N=1030; int m,n,a[N][N],d[N],ans[N],tot; void dfs(int i){ for(int j=1;j<=m;j++){ if(a[i][j]){ a[i][j]--; a[j][i]--; dfs(j); // break; 不可以去除 } } ans[++tot]=i; } int main(){ cin>>n; while(n--){ int x,y; scanf("%d%d",&x,&y); a[x][y]++; a[y][x]++; d[x]++; d[y]++; m=max(m,max(x,y)); } int start=0; for(int i=1;i<=m;i++){ if(d[i]%2){ start=i; break; } } if(!start){ for(int i=1;i<=m;i++){ if(d[i]){ start=i; break; } } } dfs(start);//從奇度處開始 for(int i=tot;i>0;i--) printf("%d\n",ans[i]); }