0과 1로 된 n x n의 2차원 공간(변수 input)에서
0,0부터 1로연결된 영역을 탐색하는 bfs 함수 짜봤음
void bfs(const vector<vector<int>>& input) {
const vector<int> dx = { -1,0,1,0 };
const vector<int> dy = { 0,1,0,-1 };
vector<vector<int>> visited(n, vector<int>(n));
queue<pair<int, int>> q;
visited[0][0] = 1;
q.emplace(0, 0);
while (!q.empty()) {
int x_target = q.front().first;
int y_target = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) {
int x = x_target + dx[i];
int y = y_target + dy[i];
if (x < 0 || y < 0 || x >= n || y >= n || visited[x][y] || !input[x][y]) continue;
visited[x][y] = 1;
q.emplace(x, y);
}
}
}
보통 어떤식으로 짜야 되는지 잘 모르겠어
내가 하는 방식이 주로 많이 쓰이는 방식이랑 동떨어졌다던지
이부분은 좀 거슬린다던지하는 부분 알려주면 고쳐볼게
도와줘 ㅠ
vector> visited(n, vector(n)); --> bool 로 해도 되지 않을까?
오잉 어떻게
int -> bool 맞아?
웅 맞아
걍 잘했음. 윗댓글 처럼 int를 bool로 바꿔도 되는데 너가 지금 풀 수준에서는 딱히 상관 없음.
ㄳ
bool로 바꾸면 안 됨. vector(bool) 이 일반적인 vector랑 다르게 동작하도록 해서 이상한 사고를 당할 수 있음
헉 그런것도 있구나
이상한 사고를 당하는 일까지는 없고 그냥 존나느려짐
c++17 이면 auto [x_target,y_target] = q.front() 가능
와 몰랐다 ㄳㄳ