티스토리 뷰
백준 :: BOJ :: 16234 :: 인구 이동
출처 : https://www.acmicpc.net/problem/16234
#include <bits/stdc++.h>
using namespace std;
struct A { int a, b; };
int N, L, R, f, sum, ans,
arr[50][50], dir[4][2] = { {0,1},{0,-1},{1,0},{-1,0} };
bool vi[50][50];
queue<A> q; vector<A> v;
inline bool check(int i, int j) { return (i >= 0 && j >= 0 && i < N&&j < N) ? true : false; }
inline bool cal(int a, int b) { return (abs(a - b) >= L && abs(a - b) <= R) ? true : false; }
void bfs() {
while (!q.empty()) {
auto tmp = q.front(); q.pop();
for (int d = 0; d < 4; d++) {
int ni = tmp.a + dir[d][0], nj = tmp.b + dir[d][1];
if (check(ni, nj) && !vi[ni][nj] && cal(arr[tmp.a][tmp.b], arr[ni][nj])) {
vi[ni][nj] = 1; q.push({ ni,nj });
v.push_back({ ni,nj }); sum += arr[ni][nj];
}
}
}
}
void ch() {
while (!f) {
f = 1; memset(vi, 0, sizeof(vi));
for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) {
if (!vi[i][j]) {
q.push({ i,j }); vi[i][j] = 1;
v.push_back({ i,j }); sum += arr[i][j]; bfs();
if (v.size() > 1) {
int tra = sum / v.size(); f = 0;
for (int i = 0; i < v.size(); i++) arr[v[i].a][v[i].b] = tra;
}
v.clear(); sum = 0;
}
}
if (!f) ans++;
}
}
int main() {
std::ios::sync_with_stdio(false); cin.tie(0);
cin >> N >> L >> R; ans = 0; sum = 0; f = 0;
for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) cin >> arr[i][j];
ch();
cout << ans;
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 3190] 뱀 (0) | 2019.01.21 |
---|---|
[BOJ 16235] 나무 재테크 (0) | 2019.01.10 |
[BOJ 16236] 아기 상어 (0) | 2019.01.09 |
[BOJ 5373] 큐빙 (2) | 2018.10.25 |
[BOJ 15686] 치킨 배달 (0) | 2018.10.08 |
- Total
- Today
- Yesterday
- hackerrank
- scanf
- 연구소 3
- 팁
- 17140
- string
- DP
- 트렌드
- STL
- 입출력
- 삼성
- boj
- 2018 KAKAO BLIND RECRUITMENT
- 17837
- SW Expert Academy
- 2018 카카오 블라인드 채용
- SWEA
- 이차원 배열과 연산
- 백준
- 시간 복잡도
- 게리맨더링 2
- 17143
- 역량 테스트
- 17142
- 미세먼지 안녕!
- 알고리즘
- 새로운 게임 2
- DFS
- 17144
- 17779
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |