direction = [[1,0],[0,1],[-1,0],[0,-1]]
first = set()
second = set()
def dfs(grap,x,y,visit,num):
if visit[x][y]:
return
visit[x][y] = True
num.add((x,y))
for i,j in direction:
curx = x+i
cury = y+j
if 0<=curx<len(grap) and 0<=cury<len(grap[0]) and grap[curx][cury]>=grap[x][y]:
dfs(grap,curx,cury,visit,num)
def main():
global first
global second
n,m = map(int,input().split())
grap = []
for i in range(n):
grap.append(list(map(int,input().split())))
visit = [[False]*m for _ in range(n)]
for i in range(n):
dfs(grap,i,0,visit,first)
for i in range(m):
dfs(grap,0,i,visit,first)
visit = [[False]*m for i in range(n)]
for i in range(n):
dfs(grap,i,m-1,visit,second)
for j in range(m):
dfs(grap,n-1,j,visit,second)
res = first & second # 不能写成 first and second
for i ,j in res:
print(f"{i} {j}")
if __name__=='__main__':
main()
103.水流问题
于 2025-03-18 21:11:11 首次发布