考虑一个$N\times M$的网格,每个网格要么是空的,要么是障碍物。整个网格四周都是墙壁(即第$1$行和第$N$行,第$1$列和第$M$列都是墙壁),墙壁有且仅有两处开口,分别代表起点和终点。起点总是在网格左边,终点总是在网格右边。你只能朝$4$个方向移动:上下左右。数据保证从起点到终点至少有一条路径。
从起点到终点可能有很多条路径,请找出有多少个网格是所有路径的必经网格。

——妙啊!

转换一下:

一个网格是必经网格

$\Rightarrow$它变成障碍物之后不能从起点走到终点

$\Rightarrow$它变成障碍物后,从$(1,1)$按八连通走'#'可以走到$(N,M)$

所以我们首先做两次bfs,分别记录那些与$(1,1)$或$(N,M)$按八连通可以互达的'#'

然后直接扫一遍,看哪些'.'被可以到达$(1,1)$和$(N,M)$的'#'夹着

然后......就做完了2333

#include<stdio.h>
#include<string.h>
char s[1010][1010];
bool r[1010][1010][2];
int n,m,qx[1000000],qy[1000000];
const int go[8][2]={{-1,-1},{0,-1},{1,-1},{-1,0},{1,0},{-1,1},{0,1},{1,1}};
bool can(int p,int x,int y){return 1<=x&&x<=n&&1<=y&&y<=m&&s[x][y]=='#'&&!r[x][y][p];
}
void bfs(int p,int x,int y){int head,tail,i;head=tail=1;qx[1]=x;qy[1]=y;r[x][y][p]=1;while(head<=tail){x=qx[head];y=qy[head];head++;for(i=0;i<8;i++){if(can(p,x+go[i][0],y+go[i][1])){tail++;r[x+go[i][0]][y+go[i][1]][p]=1;qx[tail]=x+go[i][0];qy[tail]=y+go[i][1];}}}
}
int main(){int i,j,ii,jj,ans;bool flag;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)scanf("%s",s[i]+1);bfs(0,1,1);bfs(1,n,m);ans=2;for(i=2;i<n;i++){for(j=2;j<m;j++){flag=0;for(ii=0;ii<7;ii++){for(jj=ii+1;jj<8;jj++){if((r[i+go[ii][0]][j+go[ii][1]][0]&&r[i+go[jj][0]][j+go[jj][1]][1])||(r[i+go[ii][0]][j+go[ii][1]][1]&&r[i+go[jj][0]][j+go[jj][1]][0])){ans++;flag=1;break;}}if(flag)break;}}}printf("%d",ans);
}

转载于:https://www.cnblogs.com/jefflyy/p/7629114.html

[Contest20171005]Maze相关推荐

  1. [A Dangerous Maze LightOJ - 1027 ][概率题]

    A Dangerous Maze LightOJ - 1027 题目大意:就是你有nnn个门每次你都会随机选一个门,这个门对应得数值如果是负的那么你将会在aia_iai​的时间后回到原来位置,如果是正 ...

  2. (POJ 3026) Borg Maze 最小生成树+bfs

    题目链接:http://poj.org/problem?id=3026. DescriptionThe Borg is an immensely powerful race of enhanced h ...

  3. 【POJ 3026】Borg Maze

    [POJ 3026]Borg Maze 一个考察队搜索alien 这个考察队能够无限切割 问搜索到全部alien所须要的总步数 即求一个无向图 包括全部的点而且总权值最小(最小生成树 BFS+最小生成 ...

  4. C++rat maze老鼠迷宫算法(附完整源码)

    rat maze老鼠迷宫的算法 rat maze老鼠迷宫的算法的完整源码(定义,实现,main函数测试) rat maze老鼠迷宫的算法的完整源码(定义,实现,main函数测试) #include & ...

  5. [Mummy Maze] 宽度优先搜索

    有个小游戏ms很有意思 叫Mummy Maze 这边有一个下载地址 有兴趣的可以试试 http://www.jz5u.com/Soft/games/chess/20301.html 我也在玩 不过我写 ...

  6. Solve The Maze CodeForces - 1365D(贪心+dfs)

    Vivek has encountered a problem. He has a maze that can be represented as an n×m grid. Each of the g ...

  7. NEKO's Maze Game(思维)

    3R2 as DJ Mashiro - Happiness Breeze Ice - DJ Mashiro is dead or alive NEKO#ΦωΦ has just got a new m ...

  8. HDU 4035 Maze

    Maze http://acm.hdu.edu.cn/showproblem.php?pid=4035 分析: 在树上走来走去,然后在一个点可以k的概率回到1,可以e的概率走出去,可以1-k-e的概率 ...

  9. LightOJ - 1027 A Dangerous Maze —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous Maze     PDF (English) Statistics Fo ...

最新文章

  1. 关于AI方面创业公司的分析
  2. bzoj3140: [Hnoi2013]消毒
  3. linux ssh 设置的相关总结(ssh最大连接数、ssh连接时长、安全性配置等)
  4. 湖北工业大学c语言作业答案,湖北工业大学C语言PPT
  5. Java jvisualvm简要说明
  6. 关于网络编程中MTU、TCP、UDP、IP
  7. 以系统化视角反观产品运营,解读提升用户转化的“四部曲”
  8. 如何利用phpize在生产环境中为php添加新的扩展php-bcmath
  9. node js unknown option -v._mac os上搭建node环境(nvm, node.js, npm)
  10. mac install torch0.4.1
  11. Apache Tomcat下载、安装、配置图文教程
  12. word文档怎么批量解除锁定_解除锁定的word文档的方法
  13. 工业机器人电柜布线_工业机器人示教器及其连线图
  14. 学位论文参考文献格式
  15. office 2019 word鼠标点击反应慢要等一下
  16. windows10一右击就转圈圈,假死状态解决了
  17. 中国最顶尖的黑客,连外国人都想拜他为师
  18. Win10 安装 PySC2 环境 -- DeepMind联合战网开发的《星际争霸 II》强化学习环境
  19. 字典转JSON字符串 字典转Data Data转JSON字符串 swift
  20. PostgreSQL入门

热门文章

  1. Oracle编程入门经典 第3章 建立以及管理用户和表
  2. Python基础教程(九):面向对象、正则表达式
  3. c#中datareader中HasRows属性和Read方法的区别
  4. 一天一个设计模式(一) - 总体概述
  5. 《Cisco QoS认证考试指南(第2版)》——1.1节“我已经知道了吗?”测试
  6. OCR磁盘的导出和导入、备份和恢复以及移动(ocrconfig命令的应用)
  7. Ubuntu 相关命令行工具
  8. java web接收POST数据
  9. JS获取用户控件中的子控件Id
  10. LVS 配置Iptables防火墙及故障解决