暴力BFS即可

#include <bits/stdc++.h>
using namespace std; int n,m,f[105][105];
char s[105][105];
struct pt {int x,y;}; bool check(int i,int j) {
if(i<=0 || i>n || j<=0 || j>m) return false;
if(s[i][j]=='X') return false;
return true;
} int main() {
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>s[i]+1;
int si,sj;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(s[i][j]=='M') si=i,sj=j;
}
}
memset(f,0x3f,sizeof f);
f[si][sj]=0;
queue <pt> q;
q.push((pt){si,sj});
while(!q.empty()) {
int pi=q.front().x,pj=q.front().y;
q.pop();
int t=f[pi][pj];
if(check(pi+1,pj)) {
if(check(pi+2,pj+1)&&0x3f3f3f3f==f[pi+2][pj+1])f[pi+2][pj+1]=min(f[pi+2][pj+1],t+1),q.push((pt){pi+2,pj+1});
if(check(pi+2,pj-1)&&0x3f3f3f3f==f[pi+2][pj-1])f[pi+2][pj-1]=min(f[pi+2][pj-1],t+1),q.push((pt){pi+2,pj-1});
}
if(check(pi-1,pj)) {
if(check(pi-2,pj+1)&&0x3f3f3f3f==f[pi-2][pj+1])f[pi-2][pj+1]=min(f[pi-2][pj+1],t+1),q.push((pt){pi-2,pj+1});
if(check(pi-2,pj-1)&&0x3f3f3f3f==f[pi-2][pj-1])f[pi-2][pj-1]=min(f[pi-2][pj-1],t+1),q.push((pt){pi-2,pj-1});
}
if(check(pi,pj+1)) {
if(check(pi+1,pj+2)&&0x3f3f3f3f==f[pi+1][pj+2])f[pi+1][pj+2]=min(f[pi+1][pj+2],t+1),q.push((pt){pi+1,pj+2});
if(check(pi-1,pj+2)&&0x3f3f3f3f==f[pi-1][pj+2])f[pi-1][pj+2]=min(f[pi-1][pj+2],t+1),q.push((pt){pi-1,pj+2});
}
if(check(pi,pj-1)) {
if(check(pi+1,pj-2)&&0x3f3f3f3f==f[pi+1][pj-2])f[pi+1][pj-2]=min(f[pi+1][pj-2],t+1),q.push((pt){pi+1,pj-2});
if(check(pi-1,pj-2)&&0x3f3f3f3f==f[pi-1][pj-2])f[pi-1][pj-2]=min(f[pi-1][pj-2],t+1),q.push((pt){pi-1,pj-2});
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) cout<<(f[i][j]>1e9?-1:f[i][j])<<(j==m?"":" ");
if(i<n)cout<<endl;
}
}

Wannafly Camp 2020 Day 6I 你吓到我的马了.jpg - BFS的更多相关文章

  1. Wannafly Winter Camp 2020 Day 6I 变大! - dp

    给定一个序列,可以执行 \(k\) 次操作,每次选择连续的三个位置,将他们都变成他们的最大值,最大化 \(\sum a_i\) 需要对每一个 \(k=i\) 输出答案 \(n \leq 50, a_i ...

  2. Wannafly Camp 2020 Day 3I N门问题 - 概率论,扩展中国剩余定理

    有一个猜奖者和一个主持人,一共有 \(n\) 扇门,只有一扇门后面有奖,主持人事先知道哪扇门后有奖,而猜奖者不知道.每一轮,猜奖者选择它认为的有奖概率最大(如果有多个最大,随机选一个)的一扇门,主持人 ...

  3. Wannafly Camp 2020 Day 3F 社团管理 - 决策单调性dp,整体二分

    有 \(n\) 个数构成的序列 \({a_i}\),要将它划分为 \(k\) 段,定义每一段的权值为这段中 \((i,j) \ s.t. \ i<j,\ a_i=a_j\) 的个数,求一种划分方 ...

  4. Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛

    杜教筛求 \(\phi(n)\), \[ S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d}) \] 答案为 \[ \sum_{d=1}^n \phi(d) h(\fra ...

  5. Wannafly Camp 2020 Day 2B 萨博的方程式 - 数位dp

    给定 \(n\) 个数 \(m_i\),求 \((x_1,x_2,...,x_n)\) 的个数,使得 \(x_1 \ xor\ x_2\ xor\ ...\ xor\ x_n = k\),且 \(0 ...

  6. Wannafly Camp 2020 Day 2D 卡拉巴什的字符串 - 后缀自动机

    动态维护任意两个后缀的lcp集合的mex,支持在串末尾追加字符. Solution 考虑在 SAM 上求两个后缀的 LCP 的过程,无非就是找它们在 fail 树上的 LCA,那么 LCP 长度就是这 ...

  7. Wannafly Camp 2020 Day 1D 生成树 - 矩阵树定理,高斯消元

    给出两幅 \(n(\leq 400)\) 个点的无向图 \(G_1 ,G_2\),对于 \(G_1\) 的每一颗生成树,它的权值定义为有多少条边在 \(G_2\) 中出现.求 \(G_1\) 所有生成 ...

  8. Wannafly Camp 2020 Day 2I 堡堡的宝藏 - 费用流

    感谢这道题告诉我KM求的是 完备 最大权匹配 :( #include <bits/stdc++.h> using namespace std; #define reset(x) memse ...

  9. Wannafly Camp 2020 Day 2J 邦邦的2-SAT模板

    #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cout<<n& ...

随机推荐

  1. Android中实现长按照片弹出右键菜单

    场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为Lin ...

  2. MySQL必知必会--汇 总 数 据

    聚集函数 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提 供了专门的函数.使用这些函数,MySQL查询可用于检索数据,以便分 析和报表生成.这种类型的检索例子有以下几种. 确定表中行数 ...

  3. 在C#下使用TensorFlow.NET训练自己的数据集

    在C#下使用TensorFlow.NET训练自己的数据集 今天,我结合代码来详细介绍如何使用 SciSharp STACK 的 TensorFlow.NET 来训练CNN模型,该模型主要实现 图像的分 ...

  4. spring boot tomcat 部署

    前几天springboot项目部署到linux中,整个过程就是个坑啊.踩坑的过程中也学到了许多.spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8. 所以部署的话就分为两 ...

  5. 使用Sqlserver 2012 导出表数据为SQL脚本

    目录 前言 具体步骤 前言 很多时候,我们需要把数控库中的表的数据导出成SQL脚本的情形.然后,在别的库执行的情况. 以下,总结使用Sqlserver 2012数据库中表数据导出成SQL脚本的步骤. ...

  6. webstrom 2019 注册码(可用 2019年10月14日08:59:18)

    K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGOiBodHRwOi8va ...

  7. Angular2的环境构筑

    1.nodejs安装   https://nodejs.org/en/download/   2.环境变量设定   Path->\node-v10.16.3-win-x64   3.在cmd下输 ...

  8. LAMP搭建随笔

    前言 这是我第一次在写博客,里面记录了我配置LAMP遇到的各种各样的细节,也许表述不够准确,希望大佬给于批评指正 环境 OS Ubuntu server 18.04.3 远程连接软件 cmder 文件 ...

  9. 智能家居为MCU带来巨大需求量

    新一代年轻消费族群对于生活品质的需求逐渐提高,不仅小米要发展智能家居,中兴通讯也在于近日在北京揭晓智"智能家居"将成为市场主流,而智能家居的崛起也必然引爆MCU的需求量迅速攀升,众 ...

  10. P1422 小玉家的电费(scanf,printf)

    题目描述 夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了.小玉家今天收到了一份电费通知单.小玉看到上面写:据闽价电[2006]27号规定,月用电量在 150 千瓦时及以下部分按每千瓦时 ...