zoukankan      html  css  js  c++  java
  • CF-1214D. Treasure Island(dfs,最小割)

    CF传送门

    洛谷传送门


    解题思路

    首先容易想到的是个最小割板子,注意点要分成入点和出点。

    其次就是简单的dfs,很显然,答案是0或1或2。

    第一遍如果没有路,答案就是0,并且把所有经过的点都标记成障碍。

    第二遍再进行一次dfs,若没路,答案就是1,否则就是2。

    AC代码

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<iomanip>
     5 #include<cmath>
     6 #include<vector>
     7 using namespace std;
     8 const int maxn=1000005;
     9 int n,m;
    10 vector<int> ma[maxn];
    11 bool dfs(int x,int y){
    12     if(x==n&&y==m) return 1;
    13     if(x<n&&ma[x+1][y]){
    14         if(dfs(x+1,y)){
    15             ma[x][y]=0;
    16             return 1;
    17         }
    18     }
    19     if(y<m&&ma[x][y+1]){
    20         if(dfs(x,y+1)){
    21             ma[x][y]=0;
    22             return 1;
    23         }
    24     }
    25     ma[x][y]=0;
    26     return 0;
    27 }
    28 int main(){
    29     scanf("%d %d",&n,&m);
    30     for(int i=1;i<=n;i++){
    31         ma[i].push_back(0);
    32         for(int j=1;j<=m;j++){
    33             char c;
    34             c=getchar();
    35             while(c!='.'&&c!='#')c=getchar();
    36             if(c=='.') ma[i].push_back(1);
    37             else ma[i].push_back(0);
    38         }
    39     }
    40     if(dfs(1,1)){
    41         if(dfs(1,1)) cout<<2;
    42         else cout<<1<<endl;
    43     }
    44     else cout<<0<<endl;
    45     return 0;
    46 }
  • 相关阅读:
    常见问题汇总
    python的正则表达式
    Python 程序读取外部文件、网页的编码与JSON格式的转化
    第三方仓库PyPI
    文件名称一定不要设置为某些模块名称,会引起冲突!
    迟来的博客
    FENLIQI
    fenye
    Notif
    phpv6_css
  • 原文地址:https://www.cnblogs.com/yinyuqin/p/14496701.html
Copyright © 2011-2022 走看看