티스토리 뷰

https://www.acmicpc.net/problem/18405

 

18405번: 경쟁적 전염

첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치��

www.acmicpc.net

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
from collections import deque
 
dd = ((-10), (01), (10), (0-1))
n, k = map(int, input().split())
= deque()
viruses = list()
graph = [[0for _ in range(n + 1)]
for i in range(1, n + 1):
    arr = list(map(int, input().split()))
    graph[i] += arr
    for j in range(1, n + 1):
        if graph[i][j] != 0:
            viruses.append((graph[i][j], 0, i, j))
 
s, x, y = map(int, input().split())
viruses.sort()
for virus in viruses:
    q.append(virus)
 
while q:
    virus = q.popleft()
 
    for i in range(4):
        posx, posy = virus[2+ dd[i][0], virus[3+ dd[i][1]
        if 1 <= posx <= n and 1 <= posy <= n and graph[posx][posy] == 0 and virus[1< s:
            graph[posx][posy] = virus[0]
            q.append((virus[0], virus[1+ 1, posx, posy))
 
print(graph[x][y])
cs

전형적인 BFS 방식 문제이다.

튜플의 1번째 원소 (virus[1])은 시간을 나타낸다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함