Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MAXN = 1e9;
- int dist[MAXN];
- int n, k;
- int main(){
- cin >> n >> k;
- deque<int> dq;
- dq.push_back(n);
- memset(dist, 1e9, sizeof(dist));
- dist[n] = 0;
- while (dq.size()) {
- int cur = dq.front();
- dq.pop_front();
- if (cur == k) {
- cout << dist[k];
- return;
- }
- int w = cur * 2;
- if (w <= 200000 && dist[w] > dist[cur]) {
- dist[w] = dist[cur];
- dq.push_front(w);
- }
- int l = cur - 1, r = cur + 1;
- if (l >= 0 && dist[l] > dist[cur] + 1) {
- dq.push_back(l);
- dist[l] = dist[cur] + 1;
- }
- if (r <= 200000 && dist[r] > dist[cur] + 1) {
- dq.push_back(r);
- dist[r] = dist[cur] + 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement