catch that cow题解
2025-07-25 17:28:58
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int n,k;
int dp[100009],vis[100009];
void bfs(int n){
queue<int>q;
q.push(n);
vis[n]=1;
while(q.size()){
int u = q.front();
q.pop();
if(u==k)return;
if(!vis[u-1]&&u-1>=0){
vis[u-1]=1;
q.push(u-1);
dp[u-1]=dp[u]+1;
}
if(!vis[u+1]&&u<100000){
vis[u+1]=1;
q.push(u+1);
dp[u+1]=dp[u]+1;
}
if(!vis[u+u]&&u<=100000/2){
vis[u+u]=1;
q.push(u+u);
dp[u+u]=dp[u]+1;
}
}
}
int main(){
cin>>n>>k;
bfs(n);
cout<<dp[k];
return 0;
}
这里空空如也










有帮助,赞一个