Codeforcesラウンド#536(。ディビジョン2)、問題:(D)旧正月とワンダ【最小堆+ BFS】

問題の意味

順序は、最も低いノード散歩を決定しました

思考

辞書式に最小の最低保証スタック、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;
}
学如逆水行舟,不进则退
公開された414元の記事 ウォンの賞賛973 ビュー130 000 +

おすすめ

転載: blog.csdn.net/weixin_42429718/article/details/104105475
おすすめ