티스토리 뷰

Coding/acmicpc

백준 5014:스타트링크

이끼대백과 2018. 4. 16. 15:43

이번문제는 전형적인 BFS문제입니다. 시작점부터 목표점까지 갈 수 있도록 탐색하는 문제입니다.

밑에는 제 코드입니다.

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
#include <iostream>
#include <queue>
 
using namespace std;
 
int F, S, G, U, D;
 
vector<int> floors;
vector<int> visited;//visited에 이동횟수 입력
 
bool isSafe(int pos) {
    if (pos<0 || pos> F) return false;
    else return true;//범위 체크
}
 
int bfs(int from,int to) {
    queue<int> q; q.push(from);
    visited[from] = 1;
    while (!q.empty()) {
        int cur = q.front();
        if (cur == to) return visited[to];//목표층 도착
        if (isSafe(cur+U) && !visited[cur + U]) {
            q.push(cur + U);//U버튼
            visited[cur + U] = visited[cur] + 1;
        }
        if (isSafe(cur-D) && !visited[cur - D]) {
            q.push(cur - D);//D버튼
            visited[cur - D] = visited[cur] + 1;
        }
        q.pop();
    }
    return 0;
}
 
int main(void) {
    cin >> F >> S >> G >> U >> D;
    floors.resize(F + 5);
    visited.resize(F + 5);
    int cnt = bfs(S, G);
    if (cnt) cout << cnt - 1<< endl;
    else cout << "use the stairs\n";
 
    return 0;
}
cs


'Coding > acmicpc' 카테고리의 다른 글

백준 2573:빙산  (2) 2018.04.19
백준 2146:다리 만들기  (0) 2018.04.19
백준 7576:토마토  (0) 2018.04.16
백준 6593:상범 빌딩  (0) 2018.04.16
백준 12851, 13549, 13913:숨바꼭질 시리즈.. feat.순간이동  (8) 2018.04.03
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/01   »
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
글 보관함