728x90
https://www.acmicpc.net/problem/18405
18405๋ฒ: ๊ฒฝ์์ ์ ์ผ
์ฒซ์งธ ์ค์ ์์ฐ์ N, K๊ฐ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ์ํ๊ด์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ์ N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํด๋น ์์น
www.acmicpc.net
์ฒ์์ ์ง ์ฝ๋์์ ์๊ฐ ์นด์ดํธํ๋ ๋ก์ง์ ์๋ชป ์ง์ ์๊พธ ์ค๋ต ํ์ ์ด ๋์์๋ค.
๋๋ฌด ์ค๋ ๋ถ์ก๊ณ ์๋ ๊ฒ ๊ฐ์์ ์ ๋ต ์์ ์ฝ๋๋ฅผ ๋ดค๋ค. (์ด์ฝํ ์ฑ )
ํ์ ์ขํ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋ ์ขํ์ ํจ๊ป ์๊ฐ์ ๋ณด๊น์ง ๊ฐ์ด ๋ด์ผ๋ฉด ์ ๋๋ก ์นด์ดํธ ํ ์ ์์๋ค.
from collections import deque
import sys
input = sys.stdin.readline
dx=[-1,1,0,0]
dy=[0,0,1,-1]
def bfs(q,time):
while q:
virus, s, x, y = q.popleft()
if s==time:
return
for i in range(4):
nx, ny = x+dx[i], y+dy[i]
if 0<=nx<n and 0<=ny<n:
if graph[nx][ny]==0:
graph[nx][ny] = virus
q.append((virus, s+1, nx, ny))
return
n,k = map(int,input().split())
graph=[]
for i in range(n):
graph.append(list(map(int,input().split())))
data=[] #๋ฐ์ด๋ฌ์ค ์ ๋ณด
for i in range(n):
for j in range(n):
if graph[i][j]!=0:
#๋ฐ์ด๋ฌ์ค ์ข
๋ฅ, ์๊ฐ์ ๋ณด, ์ขํ์ ๋ณด
data.append((graph[i][j], 0, i, j))
data.sort() #๋ฒํธ๊ฐ ๋ฎ์ ์ข
๋ฅ์ ๋ฐ์ด๋ฌ์ค๋ถํฐ ๋จผ์ ์ฆ์ํ๋ฏ๋ก ์ ๋ ฌํด์ค
queue = deque(data) #ํ์ ์ ๋ ฌ๋ ๋ฐ์ด๋ฌ์ค ์ ๋ณด ์ฝ์
s,a,b=map(int,input().split())
bfs(queue,s)
print(graph[a-1][b-1])
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]14502๋ฒ: ์ฐ๊ตฌ์ (1) | 2023.03.11 |
---|---|
[๋ฐฑ์ค]14503๋ฒ: ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2023.03.08 |
[๋ฐฑ์ค]7569๋ฒ: ํ ๋งํ (0) | 2023.02.28 |
[๋ฐฑ์ค]9205๋ฒ: ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2023.02.27 |
[๋ฐฑ์ค]11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.02.26 |