問題の意味
順序は、最も低いノード散歩を決定しました
思考
辞書式に最小の最低保証スタック、VIS各ポイント1つの出力のみていることを確認
ベクトルと隣接関係テーブルを確立
した後、図のようなBFS後再度実行。
コード
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int maxn=1e5+5;
int n,m;
int vis[maxn];
vector<int> G[maxn];
priority_queue<int,vector<int>,greater<int> > pq;
void bfs(){
pq.push(1);
while(!pq.empty()){
int u=pq.top();
pq.pop();
if(vis[u]) continue;
vis[u]=1;
cout<<u<<" ";
for(auto v:G[u]){
if(!vis[v])
pq.push(v);
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int u,v;
cin>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
bfs();
return 0;
}
学如逆水行舟,不进则退