작성
·
254
0
2-b질문입니다.
1.2분 29초에 y가 가로이고 x가 세로라고 하셨는데 그걸 어떻게 알아요?
2.사진에서 n이 10이고 m이 8로 받아져있는데요. 왜 y가 10까지 돌아야 하는데 왜 8에서 멈추나요?
import sys
sys.stdin = open('input.txt', 'r')
from collections import deque
testcase=int(input())
n,m,k=map(int,input().split())
# print(n,m,k)
# grid=[list(map(int,input().split())) for _ in range(m)]
grid2=[[0]*n for _ in range(m)]
visited=[[0]*n for _ in range(m)]
for _ in range(k):
x,y=map(int,input().split())
grid2[y][x]=1
# for i in range(m):
# print(grid2[i])
dxs=[-1,0,1,0]
dys=[0,-1,0,1]
Q=deque()
def in_range(x,y):
return 0<=x and 0<=y and x<n and y<n
for y in range(n):#가로
for x in range(m):#세로
if grid2[y][x]==1:
if visited[y][x]==0:
Q.append((y,x))
visited[y][x] = 1
while Q:
y,x=Q.popleft()
for dx,dy in zip(dxs,dys):
nx=dx+y
ny=dy+x
if not in_range(ny,nx):
continue
if visited[ny][nx]==1:
continue
if visited[ny][nx]==0 and grid2[ny][nx]==1:
visited[ny][nx] =1
for i in range(m):
print(visited[i])