ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 미로탐색
    백준알고리즘 2019. 8. 1. 05:45
    #include<iostream>
    #include<cstdio>
    #include<utility>
    #include<queue>
    #include<vector>
    int n, m;
    int a[101][101];
    int d[101][101];
    int dx[] = { 0,0,1,-1 };
    int dy[] = { 1,-1,0,0 };
    using namespace std;
    void bfs(int x, int y) {
    	queue<pair<int, int>> q;
    	q.push(make_pair(x, y));
    	int cnt = 1;
    	d[x][y] = cnt;
    	while (!q.empty()) {
    		x = q.front().first; y = q.front().second;
    		q.pop();
    		for (int i = 0; i < 4; i++) {
    			int nx = x + dx[i]; int ny = y + dy[i];
    			if (nx >= 0 && nx < n && ny >= 0 && ny < m) {
    				if (d[nx][ny] == 0&&a[nx][ny] == 1) {
    					d[nx][ny] = d[x][y] + 1;
    					q.push(make_pair(nx, ny));
    				}
    			}
    		}
    	}
    
    }
    int main() {
    	
    	scanf("%d %d", &n, &m);
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < m; j++) {
    			scanf("%1d", &a[i][j]); 
    			d[i][j] = 0;
    
    		}
    	}
    	
    	bfs(0,0);
    	/*for (int i = 0; i < n; i++) {
    		for (int j = 0; j < m; j++) {
    			printf("%d ", d[i][j]);
    		}
    		printf("\n");
    	}*/
    
    	printf("%d\n", d[n - 1][m - 1]);
    	return 0;
    
    
    
    }

    기초 BFS

    '백준알고리즘' 카테고리의 다른 글

    치킨배달  (0) 2019.08.02
    경사로  (0) 2019.08.02
    낚시왕  (0) 2019.08.01
    2048 (Easy)  (0) 2019.07.31
    알파벳  (0) 2019.07.31

    댓글

Designed by Tistory.