티스토리 뷰
https://www.acmicpc.net/problem/17142
17142번: 연구소 3
인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고
www.acmicpc.net
연구소에 바이러스가 포진되어 있을 때 바이러스가 전체에 퍼지는데 걸리는 시간의 최솟값을 구하는 문제입니다. 전체 맵의 최대 크기는 50*50 이지만 문제 조건에 바이러스 최대 개수가 10개라 하였으므로 활성바이러스 10C5가지의 경우가 최대 경우의 수입니다.
풀이는 다음과 같습니다.
1. 전체 바이러스 중 활성바이러스를 고른다. (dfs로 조합을 이용해 미리 구해주었습니다.)
2. 활성바이러스를 bfs로 돌려 전체에 퍼트립니다.
이 때 우선순위 큐를 이용해 큐를 해당 위치 도달 시간에 따른 오름차순으로 만들어 도달한 위치는 더 작은 값으로 업데이트될 수 없게 하였습니다.
코드는 다음과 같습니다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 1174 줄어드는 숫자 python3 (0) | 2021.06.10 |
---|---|
백준 2014 소수의 곱 C++ (0) | 2021.06.06 |
백준 10840 구간 성분 python3 (0) | 2021.06.02 |
백준 1007 벡터 매칭 C++ (0) | 2021.06.02 |
백준 18353 병사 배치하기 python3 (0) | 2021.05.28 |