0pt 求助(玄关)
查看原帖
0pt 求助(玄关)
765573
DreamInk楼主2024/8/8 20:24
不要AC Code!!!
只要求改,求思路(有回必答滗欟)

!!!大佬救命啊!!!

Code

#include<iostream>
#include<queue>
using namespace std;
int t,x,y,cnt;
int dirx[3]={-1,1};
struct node{
    int x,d;
};
void bfs(){
    queue<node>q;
    q.push((node){x,0});
    bool vis[100005]={0};
    while(q.size()){
        node t=q.front();
        q.pop();
        if(t.x==y){
            cnt=min(cnt,t.d);
            return ;
        }
        for(int i=0;i<=1;i++){
            int dx=t.x+dirx[i];
            if(dx>=0&&dx<=100000&&vis[dx]==0){
                vis[dx]=1;
                q.push((node){dx,t.x+1});
                vis[dx]=0;
            }
        }
        int dx=t.x*2;
        if(dx>=0 && dx<=100000 &&vis[dx]==0){
            vis[dx]=1;
            q.push((node){dx,t.x+1});
            vis[dx]=0;
        }
    }
}
void work(){
    cin>>x>>y;
    cnt=99999999;
    bfs();
    cout<<cnt;
}
int main(){
    cin>>t;
    while(t--){
        work();
    }
    return 0;
}
2024/8/8 20:24
加载中...