算法提高之矩阵距离

算法提高之矩阵距离

  • 核心思想:多源bfs

    • 从多个源头做bfs,求距离

    • 在这里插入图片描述

    • 先把所有1的坐标存入队列 再把所有1连接的位置存入 一层一层求

  •   #include <iostream>
      #include <cstring>
      #include <algorithm>
      
      using namespace std;
      const int N = 1010;
      #define x first
      #define y second
      typedef pair<int, int> PII;
      
      int dist[N][N];
      int n,m;
      int hh,tt=-1;
      char g[N][N];
      PII p[N*N];
      int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
      
      void bfs()
      {
          memset(dist,-1,sizeof dist);
          for(int i=0;i<n;i++)
              for(int j=0;j<m;j++)
                  if(g[i][j] == '1')  //把所有1的位置放入
                  {
                       p[++tt] = {i,j};
                       dist[i][j] = 0;  //距离初始化为0
                  }
                  
          while(hh<=tt)
          {
              auto t = p[hh++];
              for(int i=0;i<4;i++)
              {
                  int x = t.x+dx[i],y = t.y+dy[i];
                  if(x<0 || x>=n || y<0 || y>= m || dist[x][y] != -1) continue;
                  dist[x][y] = dist[t.x][t.y] + 1;
                  p[++tt] = {x,y};
              }
          }
      }
      int main()
      {
          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<<dist[i][j]<<" ";
              cout<<endl;
          }
      }
    

相关推荐

  1. 算法矩阵提速原理

    2024-05-12 10:58:02       12 阅读
  2. 算法提高热浪

    2024-05-12 10:58:02       10 阅读
  3. 算法提高货币系统

    2024-05-12 10:58:02       9 阅读
  4. 算法提高小国王

    2024-05-12 10:58:02       13 阅读
  5. 算法提高魔板

    2024-05-12 10:58:02       10 阅读
  6. AcWing 173.矩阵距离

    2024-05-12 10:58:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 10:58:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 10:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 10:58:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 10:58:02       20 阅读

热门阅读

  1. MongoDB聚合运算符:$toString

    2024-05-12 10:58:02       9 阅读
  2. Flutter备用依赖

    2024-05-12 10:58:02       10 阅读
  3. 什么是渐进式框架

    2024-05-12 10:58:02       8 阅读
  4. matlab人脸识别

    2024-05-12 10:58:02       8 阅读
  5. 基于STM32的衣柜防潮系统设计的毕业论文

    2024-05-12 10:58:02       8 阅读
  6. Android中C++如何读写json文件

    2024-05-12 10:58:02       12 阅读
  7. 跟我学C++中级篇——内联补遗

    2024-05-12 10:58:02       14 阅读
  8. oracle 递归查询(结构树)

    2024-05-12 10:58:02       12 阅读
  9. Dijkstra算法

    2024-05-12 10:58:02       8 阅读