| 1234567 |
- #include <algorithm>
- #include <functional>
- #include <iostream>
- #include <utility>
- #include <vector>
- using namespace std;
- int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,m;cin>>n>>m;vector<pair<int,int>>edges(m);vector<vector<pair<int,int>>>g(n);for(int i=0;i<m;++i){int u,v;cin>>u>>v;--u;--v;edges[i]={u,v};g[u].push_back({v,i});g[v].push_back({u,i});}for(auto&adj:g)sort(adj.begin(),adj.end());vector<int>best;auto run=[&](int banned){vector<int>order;vector<bool>seen(n);function<void(int)>dfs=[&](int u){seen[u]=true;order.push_back(u+1);for(auto[v,id]:g[u])if(id!=banned&&!seen[v])dfs(v);};dfs(0);return order;};if(m==n-1)best=run(-1);else for(int id=0;id<m;++id){auto cur=run(id);if((int)cur.size()==n&&(best.empty()||cur<best))best=move(cur);}for(int x:best)cout<<x<<' ';cout<<'\n';}
|