Guest User

Untitled

a guest
Aug 15th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #define MAX 200002
  5. using namespace std;
  6.  
  7. int move(int n, int k) {
  8. queue<int> q;
  9. vector<int> map(MAX, -1);
  10. map[n] = 0;
  11. q.push(n);
  12.  
  13. while (map[k] == -1) {
  14. n = q.front(); q.pop();
  15. // n - 1, n + 1, n * 2 각각의 경우에 대해서 판단을 하고 큐에 넣어준다.
  16. // 최대범위 만큼 해줘야 런타임에러 안남
  17. if (n - 1 >= 0 && map[n - 1] == -1) { map[n - 1] = map[n] + 1; q.push(n - 1); }
  18. if ((n + 1 < MAX) && map[n + 1] == -1) { map[n + 1] = map[n] + 1; q.push(n + 1); }
  19. if ((n * 2 < MAX) && map[n * 2] == -1) { map[n * 2] = map[n] + 1; q.push(n * 2); }
  20. }
  21. return map[k];
  22. }
  23.  
  24. int main(void) {
  25. int n, k; cin >> n >> k;
  26. printf("%d\n", move(n, k));
  27. }
Add Comment
Please, Sign In to add comment