https://codeforces.com/contest/1106/problem/D
题意:求出字典序最小的走法
解法:走到每个点,都选取与这个点连通的序号最小的点,并且这个序号最小的点没有被访问过。
#include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<vector<int> > g(n+1); for(int i=0;i<m;i++){ int a,b; cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } vector<int> visit(n+1); vector<int> path; priority_queue<int,vector<int>,greater<int> > q; q.push(1); visit[1]=1; while(!q.empty()){ int c=q.top(); q.pop(); path.push_back(c); for(int j=0;j<g[c].size();j++){ int d=g[c][j]; if(visit[d]!=1){ q.push(d); visit[d]=1; } } } for(int i=0;i<path.size();i++){ cout<<path[i]<<' '; } cout<<endl; return 0; }