题解(广度优先)
2023-09-01 08:44:52
发布于:广东
5阅读
0回复
0点赞
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int v[200005];
int main() {
int n,k;
scanf("%d %d",&n,&k);
if (n>k) {
printf("%d",n-k);
return 0;
}
for (int i=1;i<=2k;i++) {
v[i]=-1;
}
queue<int> que;
que.push(n);
int m=2k;
v[n]=0;
while (!que.empty()) {
int t=que.front();
que.pop();
if (tk) break;
if (t-1>=0&&v[t-1]-1) {
que.push(t-1);
v[t-1]=v[t]+1;
}
if (t2<=m&&v[t2]-1) {
que.push(t2);
v[t2]=v[t]+1;
}
if (t+1<=k&&v[t+1]-1) {
que.push(t+1);
v[t+1]=v[t]+1;
}
}
printf("%d",v[k]);
return 0;
}
这里空空如也
有帮助,赞一个