티스토리 뷰
백준 :: BOJ :: 17142 :: 연구소 3
출처 : https://www.acmicpc.net/problem/17142
17142번: 연구소 3
인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define F(p,q) for(int p=0; p<q; p++)
struct S { int si, sj; };
int i, j, A[50][50], N, M, R = 1e4, c, z, r[4][2] = { {-1,0},{0,1},{1,0},{0,-1} };
int main() {
vector<S> v; vector<int> v3;
cin >> N >> M;
F(i, N) F(j, N) {
cin >> A[i][j]; if (A[i][j] > 1) { v.push_back({ i,j }); z++; } if (!A[i][j]) c++;
}
F(i, z - M) v3.push_back(0); F(i, M) v3.push_back(1);
if (!c) R = 0;
else {
do {
int B[50][50], dd = c, ti = 0; memcpy(B, A, sizeof(A)); queue<S> q;
F(i, v3.size()) { if (v3[i]) { q.push(v[i]); B[v[i].si][v[i].sj] = 3; } }
while (!q.empty()) {
int qs = q.size(); ti++;
while ((qs--)) {
S ts = q.front(); q.pop();
F(j, 4) {
int ni = ts.si + r[j][0], nj = ts.sj + r[j][1];
if ((ni >= 0 && nj >= 0 && ni < N && nj < N && !(B[ni][nj] % 2))) {
q.push({ ni,nj }); if (!B[ni][nj])dd--; B[ni][nj] = 3;
}
}
if (!dd) { R = min(R, ti); break; }
}
if (ti >= R) break;
}
} while (next_permutation(v3.begin(), v3.end()));
}
cout << (R < 1e4 ? R : -1);
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 17837] 새로운 게임 2 (0) | 2019.11.06 |
---|---|
[BOJ 17779] 게리맨더링 2 (0) | 2019.10.24 |
[BOJ 17140] 이차원 배열과 연산 (0) | 2019.09.18 |
[BOJ 17143] 낚시왕 (0) | 2019.05.14 |
[BOJ 17144] 미세먼지 안녕! (2) | 2019.05.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 역량 테스트
- DFS
- 17143
- SW Expert Academy
- 입출력
- DP
- string
- 미세먼지 안녕!
- scanf
- 17142
- 연구소 3
- 이차원 배열과 연산
- SWEA
- 17837
- 17140
- 게리맨더링 2
- boj
- 2018 카카오 블라인드 채용
- 시간 복잡도
- 팁
- 트렌드
- STL
- 알고리즘
- 삼성
- 17144
- 백준
- 2018 KAKAO BLIND RECRUITMENT
- hackerrank
- 새로운 게임 2
- 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 | 29 | 30 |
글 보관함