본문 바로가기

Algorithm

C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 13700번:완전범죄 답

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <queue>
using namespace std;
int N, S, D, F, B, K, cnt[100001], nb, nf, police[100001], p, c[100001];
queue <int> q;
void BFS(int x)
{
    q.push(x);
    while (!q.empty())
    {
        x = q.front();
        q.pop();
            int nb = x - B;
            int nf = x + F;
            if (< nb)
                if (police[nb] != && c[nb] == 0)
                {
                    c[nb] = 1;
                    q.push(nb);
                    cnt[nb]=cnt[x]+1;
                }
            if (nf<=N)
                if (police[nf] != && c[nf] == 0)
                {
                    c[nf] = 1;
                    q.push(nf);
                    cnt[nf] = cnt[x] + 1;
                }
    }
 
}
int main() {
    cin >> N >> S >> D >> F >> B >> K;
    for (int i = 1; i <= K; i++)
    {
        cin >> p;
        police[p] = 1;
    }
    cnt[D] = -1;
    BFS(S);//S에서 D까지 탐색 시작
    if (cnt[D] == -1//D로 갈 수 없을 시
        cout << "BUG FOUND" << '\n';
    else
        cout << cnt[D] << '\n';
}
cs