๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DFS,BFS

[๋ฐฑ์ค€]18405๋ฒˆ: ๊ฒฝ์Ÿ์  ์ „์—ผ

by syLim___ 2023. 3. 3.
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