先正着走一次把所有可行路径标记出来,然后倒着走两条路径,一条是能向下就向下的路径,另一条能向右就向右。

如果这两条路径相交,那么(1,1)-(n,m)路径上比有个必经点,把这个必经点封上,答案是1,如果没有必经点答案是2,如果(1,1)-(n,m)不连通,答案是0

直接用递归dfs会爆栈。所以要用栈来代替递归

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
char mp[N];
int n,m;
struct Node{
int x,y;
Node(){}
Node(int x,int y):x(x),y(y){}
};
stack<Node>stk;
int vis[N],path[N];
int id(int i,int j){return (i-)*m+j;
} int main(){
cin>>n>>m;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("\n%c",&mp[id(i,j)]); stk.push(Node(,));
while(stk.size()){
Node c=stk.top();stk.pop();
int x=c.x,y=c.y;
if(vis[id(x,y)])continue;
vis[id(x,y)]=; if(x+<=n && y<=m && mp[id(x+,y)]=='.')
stk.push(Node(x+,y));
if(x<=n && y+<=m && mp[id(x,y+)]=='.')
stk.push(Node(x,y+));
} if(!vis[id(n,m)]){puts("");return ;} while(stk.size())stk.pop();
stk.push(Node(n,m));
while(stk.size()){
Node c=stk.top();stk.pop();
int x=c.x,y=c.y;
path[id(x,y)]++; if(x-> && y> && vis[id(x-,y)])
stk.push(Node(x-,y));
else if(x> && y-> && vis[id(x,y-)])
stk.push(Node(x,y-));
} while(stk.size())stk.pop();
stk.push(Node(n,m));
while(stk.size()){
Node c=stk.top();stk.pop();
int x=c.x,y=c.y;
path[id(x,y)]++; if(x> && y-> && vis[id(x,y-)])
stk.push(Node(x,y-));
else if(x-> && y> && vis[id(x-,y)])
stk.push(Node(x-,y));
}
for(int i=;i<=n;i++)
for (int j=;j<=m;j++){
if(i== && j==)continue;
if(i==n && j==m)continue;
if(path[id(i,j)]==){
puts("");
return ;
}
}
puts(""); }

网格图必经点+dfs——cf1214D的更多相关文章

  1. [CF963E]Circles of Waiting[高斯消元网格图优化+期望]

    题意 你初始位于 \((0,0)\) ,每次向上下左右四个方向走一步有确定的概率,问你什么时候可以走到 以 \((0,0)\)为圆心,\(R\) 为半径的圆外. \(R\le 50\) 分析 暴力 \ ...

  2. WPF 背景网格图

    利用DrawingBrush来画出背景网格图 <DrawingBrush Viewport="0,0,80,80" ViewportUnits="Absolute& ...

  3. 【HDOJ6218】Bridge(线段树,set,网格图,连通性)

    题意:给定一张2×n的网格图,一开始矩阵所有相邻点之间有一条边 有q个询问,每次给出两个相邻的点的坐标,将其中的边删除或者添加,问如此操作之后整张图的割边数量     n,q<=2*10^5, ...

  4. LOJ 546: 「LibreOJ β Round #7」网格图

    题目传送门:LOJ #546. 题意简述: 题目说的很清楚了. 题解: 将不包含起点或障碍物的连续的行或列缩成一行或一列,不会影响答案. 处理过后,新的网格图的行数和列数最多为 \(2k + 3\). ...

  5. 图-最短路-dijkstra-0/1BFS-1368. 使网格图至少有一条有效路径的最小代价

    2020-03-01 22:59:59 问题描述: 给你一个 m x n 的网格图 grid . grid 中每个格子都有一个数字,对应着从该格子出发下一步走的方向. grid[i][j] 中的数字可 ...

  6. 图的遍历DFS

    图的遍历DFS 与树的深度优先遍历之间的联系 树的深度优先遍历分为:先根,后根 //树的先根遍历 void PreOrder(TreeNode *R){ if(R!=NULL){ visit(R); ...

  7. 数据结构 《2》----基于邻接表表示的图的实现 DFS(递归和非递归), BFS

    图通常有两种表示方法: 邻接矩阵 和 邻接表 对于稀疏的图,邻接表表示能够极大地节省空间. 以下是图的数据结构的主要部分: struct Vertex{ ElementType element; // ...

  8. HDU 3036 Escape 网格图多人逃生 网络流||二分匹配 建图技巧

    题意: 每一个' . '有一个姑娘, E是出口,'.'是空地 , 'X' 是墙. 每秒钟每一个姑娘能够走一步(上下左右) 每秒钟每一个出口仅仅能出去一个人 给定n*m的地图, 时限T 问全部姑娘是否能 ...

  9. 图的遍历——DFS(矩形空间)

    首先,这里的图不是指的我们一般所说的图结构,而是大小为M*N的矩形区域(也可以看成是一个矩阵).而关于矩形区域的遍历问题经常出现,如“寻找矩阵中的路径”.“找到矩形区域的某个特殊点”等等之类的题目,在 ...

随机推荐

  1. 修改Tomcat的server.xml之后,tomcat 部署项目报错:Removing obsolete files from server... Could not clean server of obsolete files: null java.lang.NullPointerException

    介个是你在clean tomcat的时候 文件没有clean清.(临时崩溃 系统宕机或其他原因)导致自己eclipse里的service.xml 在clean时没有copy一致. 解决方案: 1找到你 ...

  2. Elasticsearch搜索查询语法

  3. 栈Stack --- 数组实现

    栈最大的一个特点就是先进后出(FILO—First-In/Last-Out). /** * 栈:后进先出 * Created by fred on 2018/7/31. */ public class ...

  4. java commons-fileupload servlet 多文件上传

    commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...

  5. 54、tensorflow手写识别的高级版本

    ''' Created on 2017年3月4日 @author: weizhen ''' import tensorflow as tf def weight_variable(shape): in ...

  6. sqlserver定时作业,定时执行存储过程

    首先,我想说,我真的是渣了,一个这个玩意弄了半天,算了,直接切入正题吧. 第一步: 先写好存储过程 用了两张表,你们自己建立吧 <br data-filtered="filtered& ...

  7. ng-repeat高级用法

    ng-repeat高级用法: 遍历数组: <li ng-repeat="item in array">{{item}}</li> 遍历对象: key:对象的 ...

  8. how to convert from hex to disasm

    cat ascii.hex | ascii2binary -b h -t us > ascii.bin x86dis -e 0 -s att -f ascii.bin echo "d8 ...

  9. VMware新建虚拟机之后的初始化工作

    一.开启网络功能(后面的ifcfg-ens33自身系统不同) vi /etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=yes systemctl re ...

  10. Vue.js实现一个SPA登录页面的过程【推荐】

    地址:https://www.jb51.net/article/112550.htm vue路由跳转时判断用户是否登录功能的实现 地址:https://www.jb51.net/article/126 ...