반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <iostream> #include <queue> using namespace std; int c[100001], N, K; queue <int> q; int BFS() { q.push(N); c[N] = 1; while (!q.empty()) { int x = q.front(); q.pop(); if (x == K) { return c[x] - 1; }//만약 동생의 위치를 찾았다면 종료한다. if (x - 1 >= 0 && c[x - 1] == 0) { c[x - 1] = c[x] + 1; q.push(x - 1); }//x-1이 0보다 크거나 같아야 한다. 이때 수빈이의 위치를 큐에 넣어준다. if (x + 1 <= 100000 && c[x + 1] == 0) { c[x + 1] = c[x] + 1; q.push(x + 1); } if (2 * x <= 100000 && c[2 * x] == 0) { c[2 * x] = c[x] + 1; q.push(2 * x); } } } int main() { cin >> N >> K; cout << BFS(); } | cs |
'Algorithm > BFS' 카테고리의 다른 글
(C++) - 백준(BOJ)코딩 2468번 : 안전 영역 답 (0) | 2017.02.20 |
---|---|
(C++) - 백준(BOJ) 7562번 : 나이트의 이동 답 (0) | 2017.02.18 |
(C++) - 백준(BOJ)코딩 1012번 : 유기농 배추 답 (0) | 2017.02.18 |
(C++) - 백준(BOJ)코딩 7576번 : 토마토 답 (1) | 2017.02.09 |
(C++) - 백준(BOJ) 2178번 : 미로 찾기 답 (0) | 2017.02.09 |