본문 바로가기
Algorithm 💫/Problem Solving

[백준] 2178번: 미로 탐색 / C++

by 돼지고기맛있다 2021. 9. 16.
반응형

✏️ 문제 링크

https://www.acmicpc.net/problem/2178

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net

 

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

 

✏️ 문제 코드

#include <bits/stdc++.h>

using namespace std;
using pii=pair<int, int>;
int m[101][101];
int N, M; 

int dx[]={-1, 1, 0, 0};
int dy[]={0, 0, -1, 1};

int bfs(){
    queue<pii> q; q.push({0,0});
    
    while(!q.empty()){
        int x=q.front().first; int 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 || m[nx][ny]!=1) continue;
            m[nx][ny]=m[x][y]+1;
            q.push({nx, ny});
        }
    }
    
    return m[N-1][M-1];
}
int main(){
    cin>>N>>M;
    
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            scanf("%1d", &m[i][j]);
        }
    }
    
    cout<< bfs();
    
    return 0;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

반응형

댓글