티스토리 뷰

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
46
47
48
49
50
#include <cstdio>
#include <queue>
using namespace std;
 
int bfs(int** arr, int sizeX, int sizeY) {
    queue<pair<intint>> order;
    int** visited = new int* [sizeX];
    for (int i = 0; i < sizeX; i++)
        visited[i] = new int[sizeY] {0, };
    visited[0][0= 1;
    order.push({ 00 });
    while (!order.empty()) {
        pair<intint> now = order.front();
        order.pop();
 
        if (now.first == sizeX - 1 && now.second == sizeY - 1)
            return visited[sizeX - 1][sizeY - 1];
 
        if (now.first + 1 < sizeX && arr[now.first + 1][now.second] == 1 && visited[now.first + 1][now.second] == 0) {
            order.push({ now.first + 1, now.second });
            visited[now.first + 1][now.second] = visited[now.first][now.second] + 1;
        }
        if (now.first - 1 >= 0 && arr[now.first - 1][now.second] == 1 &&  visited[now.first - 1][now.second] == 0) {
            order.push({ now.first - 1, now.second });
            visited[now.first - 1][now.second] = visited[now.first][now.second] + 1;
        }
        if (now.second + 1 < sizeY && arr[now.first][now.second + 1== 1 && visited[now.first][now.second + 1== 0) {
            order.push({ now.first, now.second + 1 });
            visited[now.first][now.second + 1= visited[now.first][now.second] + 1;
        }
        if (now.second - 1 >= 0 && arr[now.first][now.second - 1== 1 && visited[now.first][now.second - 1== 0) {
            order.push({ now.first, now.second - 1 });
            visited[now.first][now.second - 1= visited[now.first][now.second] + 1;
        }
    }
    return -1;
}
 
int main() {
    int N, M, max;
    scanf("%d %d"&N, &M);
    max = N * M;
    int** arr = new int* [N];
    for (int i = 0; i < N; i++) {
        arr[i] = new int[M];
        for (int j = 0; j < M; j++)
            scanf("%1d"&arr[i][j]);
    }
    printf("%d\n", bfs(arr, N, M));
}
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함