矩阵距离——多源BFS

给定一个 N 行 M 列的 01 矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:

dist(A[i][j],A[k][l])=|i−k|+|j−l|

输出一个 N 行 M 列的整数矩阵 B,其中:B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])

输入格式

第一行两个整数 N,M。接下来一个 N 行 M 列的 01 矩阵,数字之间没有空格。

输出格式

一个 N 行 M 列的矩阵 B,相邻两个整数之间用一个空格隔开。

数据范围

1≤N,M≤1000

输入样例:

3 4

0001

0011

0110

输出样例:

3 2 1 0

2 1 0 0

1 0 0 1

解析:

将 "1" 点放入队列,再遍历即可。不过要注意输入的问题,要用字符数组输入。

复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const int N=2e6+10;
char g[1010][1010];
int d[1010][1010];
bool vis[1010][1010];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int n,m;
queue <PII> q;
void bfs()
{
    for (int i=0;i<n;i++)
    for (int j=0;j<m;j++)
    {
        if (g[i][j]=='1')
        {
            q.push({i,j});
            vis[i][j]=1;
        }
    }
    while (q.size())
    {
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        for (int i=0;i<4;i++)
        {
            int a=x+dx[i],b=y+dy[i];
            if (a>=0&&a<n&&b>=0&&b<m&&!vis[a][b])
            {
                d[a][b]=d[x][y]+1;
                q.push({a,b});
                vis[a][b]=1;
            }
        }
    }
}
signed main()
{
    ios;
    cin>>n>>m;
    for (int i=0;i<n;i++) cin>>g[i];
    bfs();
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++) cout<<d[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
相关推荐
xsyaaaan3 小时前
leetcode-hot100-双指针:283移动零-11盛最多水的容器-15三数之和-42接雨水
算法·leetcode
炽烈小老头7 小时前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
一碗白开水一7 小时前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
仰泳的熊猫7 小时前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
Tisfy8 小时前
LeetCode 1888.使二进制字符串字符交替的最少反转次数:前缀和O(1)
算法·leetcode·字符串·题解
滴滴答滴答答8 小时前
机考刷题之 9 LeetCode 503 下一个更大元素 II
算法·leetcode·职场和发展
飞Link8 小时前
梯度下降的优化算法中,动量算法和指数加权平均的区别对比
人工智能·深度学习·算法
啊哦呃咦唔鱼9 小时前
LeetCode hot100-15 三数之和
数据结构·算法·leetcode
_日拱一卒9 小时前
LeetCode(力扣):杨辉三角||
算法·leetcode·职场和发展
rqtz9 小时前
基于I2C总线的IMU-磁力计融合算法与数据共享
算法·iic·espidf·qmc5883p·icm42670p·imu磁力计融合