본문 바로가기
코딩테스트(알고리즘)/알고리즘 구현

BFS 구현 (C++)

by Cafe Mocha 2022. 6. 17.
#include <bits/stdc++.h>
using namespace std;

#define X first
#define Y second

int board[502][502] =
{{1,1,1,0,1,0,0,0,0,0},
 {1,0,0,0,1,0,0,0,0,0},
 {1,1,1,0,1,0,0,0,0,0},
 {1,1,0,0,1,0,0,0,0,0},
 {0,1,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0,0}};

bool vis[502][502];

int n=7, m=10;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

int main(void){
    queue<pair<int,int>> Q;
    vis[0][0] =1;
    Q.push({0,0});
    
    while(!Q.empty()){
        pair<int,int> cur = Q.front();
        Q.pop();

        for(int dir = 0;dir<4;dir++){
            int nx = cur.first + dx[dir];
            int ny = cur.second + dy[dir];

            if(nx<0||nx>n||ny<0||ny>m) continue;
            if(vis[nx][ny]==1 || board[nx][ny]!=1) continue;

            vis[nx][ny]=1;
            Q.push({nx,ny});
        }
    }
}