当前位置 : 主页 > 网页制作 > HTTP/TCP >

【luoguP1588】丢失的牛

来源:互联网 收集:自由互联 发布时间:2021-06-16
Luogu题目链接:https://www.luogu.org/problem/P1588 思路 :有三种走法,x+1,x-1,x*2可以宽搜做此题 #include bits/stdc++.h using namespace std; #define maxn 1000000 int used[maxn]; struct node{ int x,t; // x记录坐标,t记录

Luogu题目链接:https://www.luogu.org/problem/P1588

思路:有三种走法,x+1,x-1,x*2 可以宽搜做此题

#include <bits/stdc++.h>
using namespace std;
#define maxn 1000000
int used[maxn];
struct node{
    int x,t;//x记录坐标,t记录步数
};
//宽搜
int bfs(int x,int y){
    queue<node> q;
    q.push((node){x,0});
    while(!q.empty()){
        node n;
        n=q.front();
        q.pop();
        for(int i=1;i<=3;i++){
            node v;
            v.t=n.t+1;
            if(i==1) v.x=n.x-1;//x-1的情况
            if(i==2) v.x=n.x+1;//x+1的情况
            if(i==3) v.x=n.x*2;//x*2的情况
            if(v.x<1||v.x>maxn) continue;
            if(used[v.x]) continue;
            if(v.x==y) return v.t;//走到了牛的位置,返回步数
            used[v.x]=1;
            q.push(v);
        }
    }
}
int main(){
    int n;
    int a,b;
    cin>>n;
    while(n--){
    memset(used,0,sizeof(used));//初始化
    cin>>a>>b;
    if(a==0) cout<<0;
    cout<<bfs(a,b)<<endl;}
}
网友评论