Notice
Recent Posts
Recent Comments
Link
반응형
변명은 만개 결과는 한개
[BFS] 단지 번호 붙이기 본문
728x90
반응형
#include <iostream>
#include <queue>
using namespace std;
int n = 0;
int a[25][25];
int d[25][25] = { 0, };
int dx[] = { 1,-1,0,0 }; // 대각선일 경우 -1, -1, 1, 1 추가
int dy[] = { 0,0,1,-1 }; // 대각선일 경우 -1, 1, -1, 1 추가
void bfs(int x, int y, int cnt) {
queue<pair<int, int>> q;
q.push(make_pair(x, y));
d[x][y] = cnt;
while (!q.empty()) {
x = q.front().first;
y = q.front().second;
q.pop();
for (int k = 0; k < 4; k++) { // 하, 상, 우, 좌 . x++ 는 y축 증가임
int nx = x + dx[k]; //near x
int ny = y + dy[k]; //near y
if (0 <= nx && nx < n && 0 <= ny && ny < n) {
if (a[nx][ny] == 1 && d[nx][ny] == 0) {
q.push(make_pair(nx, ny));
d[nx][ny] = cnt;
}
}
}
}
}
int main()
{
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf_s("%1d", &a[i][j]);
}
}
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] == 1 && d[i][j] == 0) {
bfs(i, j, ++cnt);
}
}
}
}
대충 알아들읍시다요
https://www.acmicpc.net/problem/2667
나이트는
대충 그리면 알고야
728x90
반응형
'공부 > Problem Solving' 카테고리의 다른 글
[다이나믹 프로그래밍 01] (0) | 2020.06.25 |
---|---|
[백준 2231] 분해합 (2) | 2019.11.04 |
배열을 입력받기 (0) | 2019.10.12 |
[백준 11721] 열 개씩 끊어 출력하기 (0) | 2019.05.18 |
[백준 11720] 숫자의 합 (0) | 2019.05.16 |