cf1283D——bfs

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf1283D——bfs相关的知识,希望对你有一定的参考价值。

很简单的题

#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define ll long long 
ll x[N],n,m;

map<ll,int>mp;
vector<ll>ans;
struct Node{
    ll pos,ori;
    Node(){}
    Node(ll pos,ll ori):pos(pos),ori(ori){}
};
queue<Node>q;

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>x[i];
        mp[x[i]]=1;
        q.push(Node(x[i]-1,x[i]));
        q.push(Node(x[i]+1,x[i]));
    }
    
    ll sum=0;
    while(m){
        Node now=q.front();q.pop();
        if(mp[now.pos])continue;
        m--;
        mp[now.pos]=1;
        sum+=abs(now.ori-now.pos);
        ans.push_back(now.pos);
        q.push(Node(now.pos-1,now.ori));
        q.push(Node(now.pos+1,now.ori));
    }
    cout<<sum<<endl;
    for(auto x:ans)cout<<x<<" ";
    
} 

以上是关于cf1283D——bfs的主要内容,如果未能解决你的问题,请参考以下文章

CF 某套题 O :Grid (简单BFS)

[CF1070A]Find a Number_bfs

CF 986A Fair——多源bfs

cf1037D. Valid BFS?(BFS?)

CF1037D Valid BFS?

[CF1037D] Valid BFS?