티스토리 뷰
백준 :: BOJ :: 7576 :: 토마토
출처 : https://www.acmicpc.net/problem/7576
#include <bits/stdc++.h>
using namespace std;
struct a {
int i, j;
};
int N, M, ans, result;
int arr[1000][1000];
int di[] = { 0,0,1,-1 }, dj[] = {1,-1,0,0};
bool visited[1000][1000];
queue<a> q;
inline bool check(int i, int j) { return (i >= 0 && j >= 0 && i < N && j < M) ? true : false; }
int bfs() {
if (ans == 0) return 0;
while (!q.empty()) {
int t = q.size();
while (t--) {
auto tmp = q.front(); q.pop();
for (int d = 0; d < 4; d++) {
int ni = tmp.i + di[d], nj = tmp.j + dj[d];
if (check(ni, nj) && arr[ni][nj]==0 && !visited[ni][nj]) {
visited[ni][nj] = 1; ans--; q.push({ ni,nj });
}
}
}
result++;
if (ans == 0) return result;
}
return -1;
}
int main() {
std::ios::sync_with_stdio(false); cin.tie(0);
cin >> M >> N; ans = 0; result = 0;
for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) {
cin >> arr[i][j];
if (arr[i][j]==1) {
q.push({ i,j }); visited[i][j] = 1;
}
else if (arr[i][j] == 0) ans++;
}
cout << bfs();
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 15685] 드래곤 커브 (0) | 2018.10.07 |
---|---|
[BOJ 14499] 주사위 굴리기 (0) | 2018.10.04 |
[BOJ 2178] 미로탐색 (0) | 2018.10.02 |
[BOJ 2468] 안전 영역 (0) | 2018.09.18 |
[BOJ 2589] 보물섬 (0) | 2018.09.18 |
- Total
- Today
- Yesterday
- DP
- 삼성
- 백준
- 17144
- 게리맨더링 2
- 트렌드
- 17837
- 2018 KAKAO BLIND RECRUITMENT
- STL
- boj
- 시간 복잡도
- 17142
- 미세먼지 안녕!
- SW Expert Academy
- 새로운 게임 2
- 17143
- 17140
- 입출력
- 17779
- string
- 연구소 3
- 알고리즘
- 이차원 배열과 연산
- 역량 테스트
- 팁
- 2018 카카오 블라인드 채용
- SWEA
- hackerrank
- scanf
- DFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |