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+);
for(int i=;i<m;i++){
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
vector<int> visit(n+);
vector<int> path;
priority_queue<int,vector<int>,greater<int> > q;
q.push();
visit[]=;
while(!q.empty()){
int c=q.top();
q.pop();
path.push_back(c);
for(int j=;j<g[c].size();j++){
int d=g[c][j];
if(visit[d]!=){
q.push(d);
visit[d]=;
}
}
}
for(int i=;i<path.size();i++){
cout<<path[i]<<' ';
}
cout<<endl;
return ;
}