为什么没有python过得案例,求求了,tile一半
查看原帖
为什么没有python过得案例,求求了,tile一半
1319663
jinjinBase楼主2024/4/10 16:03
from collections import deque
m, n = map(int, input().split())
tu = []
r = 0
for i in range(m):
    lis = list(map(int, input().split()))
    r = max(r, max(lis))
    tu.append(lis)

b = []
for i in range(2 + m, 1 + 2 * m + 1):
    b.append(input().split())


lu = 0
flag = True
for i in range(len(b)):
    for j in range(n):
        if b[i][j] == "1":
            if flag:
                x1 = i
                y1 = j
                flag = False
            lu += 1


def bfs(mid):
    q = deque([(x1, y1)])
    res = 1
    vis = [[0]*n for i in range(m)]
    vis[x1][y1] = 1
    while len(q) > 0:
        x, y = q.popleft()
        for i, j in [(0, -1), (0, 1), (1, 0), (-1, 0)]:
            xt = x + i
            yt = y + j
            if 0 <= xt < m and 0 <= yt < n:
                if vis[xt][yt]==0:
                    if abs(tu[xt][yt] - tu[x][y]) <= mid:
                        vis[xt][yt] = 1
                        q.append((xt, yt))
                        if b[xt][yt] == "1":
                            res += 1
                        if res == lu:
                            return True
    return False


l = -1
r = r + 1
while l + 1 < r:
    mid = (l + r) // 2
    if bfs(mid):
        r = mid
    else:
        l = mid
print(r)




2024/4/10 16:03
加载中...