不要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;
}