写的不一定是对的,但是不明白为什么全re,用了队列的题经常这样
查看原帖
写的不一定是对的,但是不明白为什么全re,用了队列的题经常这样
534430
amxxxxx楼主2023/2/13 20:09
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
inline int read(){
    int x=0;
    bool f=true;
    char ch=getchar();
    for(;!isdigit(ch);ch=getchar())
        if(ch=='-')f=false;
    for(;isdigit(ch);ch=getchar())
        x=(x<<1)+(x<<3)+ch-'0';
    return f?x:~(x-1);
}
int T,x,y,ans;
int dist[N];
//first 为位置 second 为次数
queue<pair<int,int> >q;
int bfs(int x,int y){
    q.push(make_pair(x,0));
    int now[4];
    while(!q.empty()){
        if(dist[y])break;
        now[1]=q.front().first-1;
        now[2]=q.front().first+1;
        now[3]=q.front().first*2;
        for(int i=1;i<=3;i++){
            q.push(make_pair(now[i],q.front().second+1));
            if(!dist[now[i]])dist[now[i]]=q.front().second+1;
        }
        q.pop();
    }
    return dist[y];
}
int main(){
    cin>>T;
    while(T--){
        cin>>x>>y;
        printf("%d\n",bfs(x,y));
        while(!q.empty())q.pop();
    }
    system("pause");
    return 0;
}

2023/2/13 20:09
加载中...