본문으로 바로가기

[백준]1697번 문제

category 카테고리 없음 2017. 7. 13. 12:01

백준 1697번 문제는 백트래킹 중

깊이우선탐색을 사용하면 된다.





#include <cstdio>

#include <queue>


using namespace std;


#define M 100001


int main()

{


int i, N, K, v, c = 0;

bool a[M] = {0};

queue<int> q1;


scanf("%d%d", &N, &K);

a[N] = true;

q1.push(N);

while(!a[K])

{


c++;

i = q1.size();

while(i--)

{


v = q1.front();

q1.pop();

if(v + 1 < M && a[v + 1] == 0)

{


a[v + 1] = true;

q1.push(v + 1);


}

if(v - 1 >= 0 && a[v - 1] == 0)

{


a[v - 1] = true;

q1.push(v - 1);


}

if(v * 2 < M && a[v * 2] == 0)

{


a[v * 2] = true;

q1.push(v * 2);


}


}


}


printf("%d", c);


}