提交时间:2023-08-24 11:09:47
运行 ID: 99976
#include<bits/stdc++.h> using namespace std; int n; int l[1040]; int r[1040]; int num[1040]; int Max=0; vector<int> path[1040]; bool b[1040][1040]; vector<int> path2; bool yes=0; void dfs(int x,int m) { if(yes==1) { return ; } if(x==n) { for(int i=0;i<path2.size();i++) { cout<<path2[i]; cout<<endl; } yes=1; return ; } for(int i=0;i<path[m].size();i++) { if(b[m][path[m][i]]==0) { path2.push_back(path[m][i]); b[m][path[m][i]]=1; b[path[m][i]][m]=1; dfs(x+1,path[m][i]); b[m][path[m][i]]=0; b[path[m][i]][m]=0; path2.pop_back(); } } return ; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>l[i]; cin>>r[i]; num[l[i]]++; num[r[i]]++; path[l[i]].push_back(r[i]); path[r[i]].push_back(l[i]); Max=max(Max,max(l[i],r[i])); } // for(int i=1;i<=Max;i++) // { // cout<<i<<" "; // for(int j=0;j<path[i].size();j++) // { // cout<<path[i][j]<<" "; // } // cout<<endl; // } for(int i=1;i<=Max;i++) { if(num[i]%2==1) { path2.push_back(i); dfs(0,i); break; } } return 0; }