반응형
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 (0 < nb) if (police[nb] != 1 && c[nb] == 0) { c[nb] = 1; q.push(nb); cnt[nb]=cnt[x]+1; } if (nf<=N) if (police[nf] != 1 && 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 |
'Algorithm' 카테고리의 다른 글
(C++) - 백준(BOJ) 5585번:거스름돈 답 (0) | 2017.02.17 |
---|---|
(C++) - 백준(BOJ) 2583번 : 영역 구하기 (0) | 2017.02.17 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 9084번:동전 답 (0) | 2017.02.17 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1766번:문제집 답 (0) | 2017.02.16 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 2294번:동전2 답 (0) | 2017.02.15 |