CF1214D

题意:

给你一个 $ n \times m $ 的矩阵,求最少用多少个障碍,将 $ (1,1) $ 到 $ (n,m) $ 的路径堵死。

题意:

因为可以将起点两边堵死,所以答案最多是 $ 2 $ ,所以答案就只有 $ 0,1,2 $ 。

先两遍DFS抠出既能从 $ (1,1) $ 到达又能到达 $ (n,m) $ 的点,看看每个步数内能到达的点是否只有一个。

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; #define LL long long
#define N 1000010 int n,m,s,ans,f;
bool vis[N];
char ch[N]; void dfs(int x) {
if(ans) return;
if(x == f) {
ans++;
return;
}
int l = x / m,r = x % m;
if(l + 1 < n && vis[(l + 1) * m + r] == 0 && ch[(l + 1) * m + r] != '#') {
vis[(l + 1) * m + r] = 1;
dfs((l + 1) * m + r);
}
if(ans) return;
if(r + 1 < m && vis[l * m + r + 1] == 0 && ch[l * m + r + 1] != '#') {
vis[l * m + r + 1] = 1;
dfs(l * m + r + 1);
}
} int main() {
scanf("%d%d",&n,&m);
for(int i = 0 ; i < n ; i++)
scanf("%s",ch + i * m);
f = n * m - 1,ans = 0;
vis[s] = 1,vis[f] = 0;
dfs(s);
if(ans == 0) {
puts("0");
return 0;
}
vis[s] = 1,vis[f] = 0;
ans = 0;
dfs(s);
if(ans == 0) puts("1");
else puts("2");
//system(
return 0;
}

CF1214D的更多相关文章

  1. 网格图必经点+dfs——cf1214D

    先正着走一次把所有可行路径标记出来,然后倒着走两条路径,一条是能向下就向下的路径,另一条能向右就向右. 如果这两条路径相交,那么(1,1)-(n,m)路径上比有个必经点,把这个必经点封上,答案是1,如 ...

随机推荐

  1. Java数据结构ArrayList

    Java数据结构ArrayList /** * <html> * <body> * <P> Copyright JasonInternational</p&g ...

  2. Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.

    django 报错 django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fiel ...

  3. python爬视频实例

    例:抓取PhotoShop视频教程 网址http://www.mxiaobei.com/?id=424 import requests import re from bs4 import Beauti ...

  4. 国际化(i18n)学习

    一 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization)又称 ...

  5. openssh升级

    转载:(感谢作者) centos7 升级openssh到openssh-8.0p1版本 https://www.cnblogs.com/nmap/p/10779658.html centos 7 op ...

  6. 建表时表空间的一些参数pctfree initrans maxtrans storage的含义

    转自:https://a475334705.iteye.com/blog/2291441 create table X_SMALL_AREA (   idx_id             NUMBER ...

  7. Cryptography -- 密码学

    Introduction to Cryptography Cryptography enables you to store sensitive information or transmit it ...

  8. node-exporter cpu使用率为负数

    在prometheus利用公式:100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle&q ...

  9. Linux 01 Liunx系统简介

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位 ...

  10. 查看python和NumPy版本和安装路径

    记录查看Python和NumPy版本以及路径的几条命令 # 查看Python版本及路径 python -V python -c "import sys;print(sys.executabl ...