본문 바로가기
백준 알고리즘/BFS

백준 1697번 C++

by paysmile 2019. 1. 7.

#include <iostream>

#include <algorithm>

#include <queue>

using namespace std;


int m, n;

int z = 0;

int visited[100001];


void bfs() {

queue<pair<int, int>> q;

q.push(make_pair(m, z));

visited[m] = 1;


while (!q.empty()) {

int M = q.front().first;

int Z = q.front().second;

q.pop();


if (M == n)

cout << Z;


if (M + 1 <= 100000 && visited[M+1] == 0) {

q.push(make_pair(M + 1, Z + 1));

visited[M + 1] = 1;

}

if (M - 1>=0 && visited[M-1] == 0) {

q.push(make_pair(M - 1, Z + 1));

visited[M - 1] = 1;

}

if (M * 2 <= 100000 && visited[M * 2] == 0) {

q.push(make_pair(M * 2, Z + 1));

visited[M * 2] = 1;

}

}

}

int main(void) {

cin >> m >> n;


if (m == n) {

cout << 0;

return 0;

}


for (int i = 0; i < 100000; i++) {

visited[i] = 0;

}

bfs();

}

'백준 알고리즘 > BFS' 카테고리의 다른 글

백준 14502번 C++  (0) 2019.01.10
백준 2468번 C++  (0) 2019.01.09
백준 11724번 C++  (0) 2019.01.09
백준 2583번 C++  (0) 2019.01.08
백준 11403번 C++  (0) 2019.01.07