8 条题解

  • 0
    @ 2026-5-27 20:40:58
    from collections import deque
    n = int(input())
    grid = [list(map(int, input().split())) for _ in range(n)]
    count = 0
    # 上下左右四个方向
    dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    
    for i in range(n):
        for j in range(n):
            if grid[i][j] == 1:
                count += 1
                q = deque([(i, j)])
                grid[i][j] = 0  # 标记为已访问
                while q:
                    x, y = q.popleft()
                    for dx, dy in dirs:
                        nx, ny = x + dx, y + dy
                        if 0 <= nx < n and 0 <= ny < n and grid[nx][ny] == 1:
                            grid[nx][ny] = 0
                            q.append((nx, ny))
    
    print(count)
    
    

    信息

    ID
    33
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    443
    已通过
    185
    上传者