AcWing 1100. 抓住那頭牛
阿新 • • 發佈:2022-03-02
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n, k; int q[N]; int dist[N]; int Min = INF; void bfs() { //初始化距離陣列-1 memset(dist, -1, sizeof dist); int hh = 0, tt = -1; q[++tt] = n; //加入起點n dist[n] = 0; // n距離出發點0個長度 while (hh <= tt) { int t = q[hh++]; if (t == k) { Min = dist[k]; return; } if (t + 1 < N && dist[t + 1] == -1) { dist[t + 1] = dist[t] + 1; q[++tt] = t + 1; } if (t - 1 >= 0 && dist[t - 1] == -1) { dist[t - 1] = dist[t] + 1; q[++tt] = t - 1; } if (t * 2 < N && dist[t * 2] == -1) { dist[t * 2] = dist[t] + 1; q[++tt] = t * 2; } } } int main() { //農夫起始位於點N,牛位於點K cin >> n >> k; bfs(); cout << Min << endl; return 0; }