def if_has_next(arr, i, j, curr):
    arr[i][j] = 0
    next = []
    left = max(j-1, 0)
    right = min(j+1, N-1)
    top = max(i-1, 0)
    down = min(i+1, M-1)
    for row in range(top, down+1):
        for col in range(left, right+1):
            if arr[row][col] == 1:
                arr[row][col] = 0
                next.append([row, col])
    if next:
        for loc in next:
            curr += 1
            curr = if_has_next(arr, loc[0], loc[1], curr)

    return curr


if __name__ == "__main__":

    M, N = tuple(map(int, input().split(',')))
    arr = [list(map(int, input().split(','))) for _ in range(M)]

    P = 0
    Q = 0

    for i in range(M):
        for j in range(N):
            curr_q = 0
            if arr[i][j] == 0:
                continue
            else:
                P += 1
                curr_q += 1
                curr_q = if_has_next(arr, i, j, curr_q)
                # print('{}{},{}'.format(i,j,curr_q))
                Q = max(Q, curr_q)

    print("{},{}".format(P, Q))


仅有的一道ac...献丑了,大神轻喷。。
大概思路就是dfs,一直搜索下去看是否有临近的观众
需要注意的点就是搜过的位置要将“1”改成“0”
边界处理是个头疼的事,debug了好久。。(毕竟渣)