"BOJ 13549 숨바꼭질 3"의 두 판 사이의 차이

 
1번째 줄: 1번째 줄:
==개요==
==개요==
[[분류: 그래프 이론]]
{{BOJ|단계=32
[[분류: 그래프 탐색]]
|분류1= 그래프 이론
[[분류: 너비 우선 탐색]]
|분류2= 그래프 탐색
[[분류: 데이크스트라]]
|분류3= 너비 우선 탐색
[[분류: 최단 경로]]
|분류4= 데이크스트라
[[분류: 0-1 너비 우선 탐색]]
|분류5= 최단 경로
{{BOJ|단계=32}}
|분류6= 0-1 너비 우선 탐색
}}


==같이 보기==
==같이 보기==

2023년 12월 23일 (토) 20:33 기준 최신판

1 개요[ | ]

BOJ 13549 숨바꼭질 3

2 같이 보기[ | ]

3 C++[ | ]

#include <bits/stdc++.h>
#include <limits.h>
using namespace std;

int N, K;
int visited[100001];

int bfs() {
    queue<int> q;
    q.push(N);
    visited[N] = 1;
    int x, nx, ncost;
    while(!q.empty()) {
        x = q.front();
        q.pop();
        if(x == K) return visited[x];
        for(int i=0; i<3; i++) {
            if(i==0) {
                nx = x*2;
                ncost = 0;
            } else if(i==1) {
                nx = x+1;
                ncost = 1;
            } else {
                nx = x-1;
                ncost = 1;
            }
            if(nx<0 || nx>100000 || visited[nx]<visited[x]+ncost) continue;
            visited[nx] = visited[x]+ncost;
            q.push(nx);
        }
    }
    return -1;
}

int main() {
    cin >> N >> K;
    fill(visited, visited+100001, INT_MAX);
    cout << bfs()-1;
}