acwing 173 矩阵距离

简介: acwing 173 矩阵距离

173. 矩阵距离 - AcWing题库

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std ;
const int N = 1010 ;
int d[4][2] = {{1,0},{-1,0},{0,-1},{0,1}} ;
struct node{
  int x,  y ;
  node(int xx ,int yy ){
    x = xx , y = yy ;
  }
};
char g[N][N] ;
int n , m ;
int dis[N][N] ;
int v[N][N] ;
queue<node> q ;
void bfs(){
  while(!q.empty()){
    node now = q.front() ;
    q.pop() ;
    int x = now.x , y = now.y ;
    for(int i = 0 ;  i < 4 ; i ++){
      int tx = x + d[i][0] , ty = y + d[i][1] ;
      if(tx<0||tx>=n||ty<0||ty>=m||dis[tx][ty]!=-1) continue ;
      dis[tx][ty] = dis[x][y] + 1 ;
      q.push(node(tx,ty)) ;
    }
  }
}
int main(){
  cin >> n >> m ;
  memset(dis,-1,sizeof(dis)) ;
  for(int i = 0 ; i < n ;i ++) cin >> g[i] ;
  for(int i = 0 ; i < n ; i++){
    for(int j = 0 ; j < m ;j ++){
      if(g[i][j] == '1') dis[i][j] = 0 , q.push(node(i,j)) ;
    } 
  }
  bfs() ;
  for(int i = 0 ; i < n ; i ++){
    for(int j = 0 ; j < m ; j ++){
      cout << dis[i][j] << " " ;
    }cout << endl ;
  }
} 
目录
打赏
0
0
0
0
24
分享
相关文章
Linux 实操篇-Linux 磁盘分区、挂载
Linux 实操篇-Linux 磁盘分区、挂载
224 0
大数据& AI 产品月刊【2024年12月】
大数据& AI 产品技术月刊【2024年12月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
C# 一分钟浅谈:测试驱动开发 (TDD) 实践
【10月更文挑战第18天】测试驱动开发(TDD)是一种软件开发方法论,强调先编写测试代码再编写功能代码,以确保代码质量和可维护性。本文从 TDD 的基本概念入手,详细介绍了其核心步骤——编写测试、运行测试并失败、编写代码使测试通过,以及“红绿重构”循环。文章还探讨了 TDD 的优势,包括提高代码质量、促进设计思考、减少调试时间和文档化。此外,文中分析了常见问题及解决方案,如测试覆盖率不足、测试代码过于复杂、忽视重构和测试依赖过多,并通过一个简单的计算器类的代码案例,展示了 TDD 的实际应用过程。
134 1
JavaScript获取url网址中域名后面的部分
如何截取 url 中网站域名之后的部分,需要用到以下几个方法:
190 3
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
167 0
产品入门第六讲:Axure中继器
产品入门第六讲:Axure中继器
172 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问