티스토리 뷰

알고리즘/백준

백준 17142 연구소3 C++

4567은 소수 2021. 6. 4. 20:14

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/04   »
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
글 보관함