* Computer Science/Algorithm

baekjun 2178. 미로탐색

soicem 2018. 10. 30. 11:52

 bfs에서 순서 알고 싶을때는 현재값 = 이전값 + 1


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
51
#include<bits/stdc++.h>
#define MAX 0x12345678
using namespace std;
int matrix[101][101];
int visitedList[101][101];
int tbrl[4][2= {{01}, {10}, {-10}, {0-1}};
int N,M;
int result = MAX;
 
bool isInMatrix(int y, int x){
    return (y <= N) && (y >0&& (x <= M) && (y >0);
}
 
void bfs(){
    queue<pair<intint> > que;
    que.push(pair<intint>(11));
    visitedList[1][1= 1;
    while(!que.empty()){
        pair<intint> tmp = que.front();
        int y = tmp.first;
        int x = tmp.second;
        que.pop();
        for(int i = 0 ; i < 4; i++){
            int yi = y + tbrl[i][0];
            int xi = x + tbrl[i][1];
            if(isInMatrix(yi, xi) && !visitedList[yi][xi] && matrix[yi][xi]){
                que.push(pair<intint>(yi, xi));
                visitedList[yi][xi] = visitedList[y][x] + 1;
            }
        }
    }
    cout << visitedList[N][M] << endl;
}
 
int main(){
    cin >> N >> M;
    memset(visitedList, 0sizeof(visitedList));
    for(int i=1; i <= N; i++){
        string tmp;
        cin >> tmp;
        for(int j=1; j<=M; j++){
            if(tmp[j - 1== '1')
                matrix[i][j]=1;
            else
                matrix[i][j]=0;
        }
    }
    bfs();
    return 0;
}
 
cs


'* Computer Science > Algorithm' 카테고리의 다른 글

baekjun 10942. 팰린드롬?  (0) 2018.10.31
baekjun 1890. jump  (0) 2018.10.30
baekjun 11048. 이동하기  (0) 2018.10.29
baekjun 바이러스  (0) 2018.10.29
baekjun 7569. 토마토2  (0) 2018.10.05