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

dist(A[i][j],A[k][l])=|i−k|+|j−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])B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1⁡dist(A[i][j],A[x][y])

输入格式

第一行两个整数n,m。

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

输出格式

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

数据范围

1≤N,M≤10001≤N,M≤1000

输入样例:

3 4
0001
0011
0110

输出样例:

3 2 1 0
2 1 0 0
1 0 0 1

题意理解:B[i]对应原A[i]中为0的点到最近的为1的点的曼哈顿距离。
思路:bfs,将原来地图中为1的点全部先入队,然后展开广搜,碰到不为1的点就入队,并且标记它的最近曼哈顿距离为基点(从队列中取出来的点)的距离加1.因为刚开始将所有的地图上为1的点标记为1,所以最后输出时要减1.
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
int vis[][];
char g[][];
int dx[]={,,,-},dy[]={,-,,};
int n,m;
queue<P>q;
void bfs()
{
while(q.size())
{
P st=q.front();q.pop();
for(int i=;i<;i++)
{
int x=st.first+dx[i],y=st.second+dy[i];
if(x>=&&x<n&&y>=&&y<m&&!vis[x][y])
{
vis[x][y]=vis[st.first][st.second]+;
q.push({x,y});
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
{
getchar();
for(int j=;j<m;j++)
{
scanf("%c",&g[i][j]);
vis[i][j]=g[i][j]-'';
if(vis[i][j])
q.push({i,j});
}
}
bfs();
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
printf("%d ",vis[i][j]-);
}
printf("\n");
}
return ; }

acwing 173. 矩阵距离(bfs)的更多相关文章

  1. AcWing:173. 矩阵距离(bfs)

    给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l]) ...

  2. [BZOJ2252]矩阵距离(BFS)

    题意 输入矩阵m行n列(m<=500,n<=500),只含0.1,输出离每个元素距离最近的1的距离,其中距离定义为D(aij,akl)=abs(i-k)+abs(j-l). 示例: 输入: ...

  3. AcWing P173 矩阵距离 题解

    Analysis 就是一个裸的广搜,每次从是1的点开始找就好啦~~~ #include<iostream> #include<cstdio> #include<cstri ...

  4. BZOJ2252: [2010Beijing wc]矩阵距离

    题解: 我脑子里都是翔??? bfs一下就行了 我居然还想什么kd tree!真是too naive,,, #include<cstdio> #include<cstdlib> ...

  5. BZOJ 2252: [2010Beijing wc]矩阵距离

    题目 2252: [2010Beijing wc]矩阵距离 Time Limit: 10 Sec  Memory Limit: 256 MB Description 假设我们有矩阵,其元素值非零即1 ...

  6. Bzoj 2252: [2010Beijing wc]矩阵距离 广搜

    2252: [2010Beijing wc]矩阵距离 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 563  Solved: 274[Submit][ ...

  7. 「CH2501」 矩阵距离 解题报告

    CH2501 矩阵距离 描述 给定一个N行M列的01矩阵 A,\(A[i][j]\) 与 \(A[k][l]\) 之间的曼哈顿距离定义为: \(dist(A[i][j],A[k][l])=|i-k|+ ...

  8. Acwing 蛇形矩阵

    Acwing 蛇形矩阵 package javaqq; import java.util.Scanner; public class 蛇形 { public static void main(Stri ...

  9. 2501 矩阵距离 (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,其 ...

随机推荐

  1. css/html 空格,html空格符的显示、标示方式【html空格代码】

    在html里面空格的话,你直接敲打出来的空格是不可以的,下面将通过html和css中设置显示空格的实现总结: Html中空格 符号 编号 描述      不断行的空白(1个字符宽度), 不换行空格 全 ...

  2. 我打算用JAVA实现GB/T32960 监控平台的tcp server

    之前是用golang写得 ,因为对golang不是很熟练,打算基于netty再写一个,开源出来. 如果近期时间宽裕,就准备着手了. 有兴趣的朋友也可以留言一起做.

  3. Blazor带我重玩前端(二)

    概览 Blazor目前有两种托管模式,一种是Server-Side模式,一种是WebAssembly模式.官方首先支持的是Service-Side模式,使用WebAssembly模式,需要更新到最新版 ...

  4. Creator填色游戏的一种实现方案

    前言 先上一个辛苦弄出来的gif效果.写公众号时间不长,很多技巧还在慢慢跟小伙伴学习.可关注公众号,回复"绘图"或者"填色"都可获得demo的git地址.请使用 ...

  5. 正则表达式以及sed,awk用法 附带案例

    则表达式 基本正则 ^    $    [  ]   [^]   .   *    \{n,m\}   \{n,\}    \(ro\)\{2\}   \(\)   扩展正则 egrep grep - ...

  6. Linux06 /Python web项目部署

    Linux06 /Python web项目部署 目录 Linux06 /Python web项目部署 1. 部署方式 2. 纯后端代码部署/CRM为例 1. 部署方式 2. crm项目详细部署步骤 3 ...

  7. js 声明变量规范和特殊变量情况

    声明变量特殊情况    情况 说明 结果 var age ; console.log (name); 只声明 不赋值 undefined console.log(name) 不声明 不赋值  直接使用 ...

  8. Video 自动播放

    先说ios ios之前的政策是视频只能在用户主动操作后才能播放,且播放时必须全屏. 随着 iOS 10 的正式发布,Safari 也迎来了大量更新,首先划出重点:1)iOS 10 Safari 支持特 ...

  9. Nginx日志按天切割基本配置说明

    1.声明日志格式 声明log    log位置                log格式; access_log logs/access.log main; 2.定义日志格式(以下为常用的日志格式 可 ...

  10. 关于Excel去空格问题

    做开发,导入导出是一项基本功能,基本每个系统都有. 导入日期字段难免碰到因为空格问题引起的日期格式化Bug 下面分享一项Excel识别空格以及去空格的方法. 一:识别空格技巧(不要相信你的眼睛,有些空 ...