题目描述:

跑图是RPG游戏中很烦躁的事情。玩家需要跑到距离他最近的传送点的位置。现在给你一张N \times MN×M的方格图,每个方格中数值00表示为平地,数值11表示为传送点,你的任务是输出一张N \times MN×M的矩阵,x y表示从(x,y)(x,y)到距离它最近的传送点的距离。 这里的距离是曼哈顿距离,(x1,y1)→(x2,y2) 的距离为|x1-x2|+|y1-y2|∣x1 −x2∣+∣y1−y2∣。

输入:
第一行,有两个数n,m。接下来n行,每行m个数。

数据保证至少有一个传送点。

1 =< n <= 500 ,1≤ n ≤500,

输出:

n行,每行m个数,表示某个点到离它最近的传送点的距离。

样例输入

2 3
0 0 0
1 0 1

样例输出

1 2 1
0 1 0

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
typedef pair<int,int> P;
int d[505][505];
int arr[505][505];
int vis[505][505];
int m,n;
P st;
int dx[][2]={1,0,-1,0,0,1,0,-1};
queue<P>q;
void bfs()
{while(!q.empty()){P tp=q.front();q.pop();vis[tp.first][tp.second]=1;for(int i=0;i<4;i++){int xx=tp.first+dx[i][0];int yy=tp.second+dx[i][1];if(xx>=0&&xx<n&&yy>=0&&yy<m&&!vis[xx][yy]&&arr[xx][yy]!=1){vis[xx][yy]=1;q.push(P(xx,yy));d[xx][yy]=d[tp.first][tp.second]+1;}}}}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%d",&arr[i][j]);if(arr[i][j]==1){q.push(P(i,j));}}}bfs();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(j < m - 1)cout<<d[i][j]<<" ";else cout << d[i][j];}cout<<endl;}return 0;
}

2018: 跑图(深搜)相关推荐

  1. 深搜DFS\广搜BFS 图初步入门

    首先,不管是BFS还是DFS,由于时间和空间的局限性,它们只能解决数据量比较小的问题. 深搜,顾名思义,它从某个状态开始,不断的转移状态,直到无法转移,然后退回到上一步的状态,继续转移到其他状态,不断 ...

  2. 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS

    图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...

  3. 生化危机 (深搜 建图)

    生化危机 发布时间: 2015年10月10日 18:05   时间限制: 1000ms   内存限制: 256M 描述 X博士想造福人类, 研发一种可以再生肢体的药物, 可是很不幸......研究失败 ...

  4. 货币套汇(图路径)-- 数据结构 (深搜+Floyd算法)

    深搜+Floyd算法 深搜 Floyd算法 题目描述 套汇是指利用货币汇兑率的差异将一个单位的某种货币转换为大于一个单位的同种货币. 例如,假定1 美元可以买0.7 英镑,1 英镑可以买9.5法郎,1 ...

  5. 图 相关算法~从头学算法【广搜、 深搜、 拓扑排序、 并查集、 弗洛伊德算法、迪杰斯特拉算法】

    图的相关主流算法主要有: 广度优先搜索 深度优先搜索 拓扑排序 并查集 多源最短路径(弗洛伊德算法) 单源最短路径(迪杰斯特拉算法) 其中呢,最基本的是前两种,也就是平时常用的广搜和深搜,本文中将概要 ...

  6. 【2018.3.10】模拟赛之一-ssl2574Closest【深搜】

    目录地址 前言 感谢黎某儿(划掉)教我这道题☆⌒(*^-゜)v. 正题 给出两个n位数A,B.我们需要找到两个最近的靠近A的n位数(第一个比A大或与A相等,第二个严格比A小),使得它们的十进制表示是B ...

  7. 方格取数(多线程dp,深搜)

    https://www.luogu.org/problem/P1004 题目描述 设有N×N的方格图(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某 ...

  8. 有趣的题目:简单深搜之数独与靶型数独--二进制状压加速与dfs数独剪枝

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudo ...

  9. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

最新文章

  1. 【讨论】基于WF的流程结构
  2. find命令删除大量小文件
  3. java 枚举使用简书_Java枚举
  4. Android UI开发第一篇——android的九宫格式实现
  5. php随机数、时间、字符串函数,正则,数组函数
  6. 如何利用Delphi释放所占的内存
  7. yum 报错:centos yum (28, 'Connection time-out') Trying other mirror.
  8. 28个经过重新设计的著名博客案例
  9. 镀铬亮条怎么修复_老车修复:翻新小改一辆破烂不堪的经典MINI,完美大变样...
  10. .NET开源5年了,这些宝藏你还没get?
  11. [html] 实现一个页面锁屏的功能
  12. 各类木材强度_凯狄解析各类抽芯铆钉的工作原理
  13. 语言在线组卷系统_如何使用在线考试系统创建题库?
  14. 《Reids 设计与实现》第四章 整数集合和压缩列表
  15. java 二分查找_Java数组之Arrays方法
  16. 怎么爬before after之间的内容_关于伪元素::before和::after的用法
  17. 剑指Offer之复杂链表的复制
  18. 第三期 预测——2.输入和输出
  19. hdu 4932 BestCoder Round #4 1002
  20. 计算机病毒级防范措施总结,计算机病毒及防范措施

热门文章

  1. OLTP与OLAP介绍
  2. bzoj3601 一个人的数论 (拉格朗日插值求系数)
  3. python str转dict
  4. 团队作业8----第二次项目冲刺(beta阶段)5.20
  5. 自己实现java I/O中的BufferedReader对象中的raedLine方法
  6. OGC 开放地理信息系统协会
  7. MOSS工作流任务权限控制
  8. 【笔记目录】南邮(通达)计算机专业基础
  9. 一步一坑学android之安装andriod studio(andriod studio3.0)
  10. 那年学过的web后端笔记