爱游戏全站app官网入口-爱游戏官网

codeforces -爱游戏全站app官网入口

2023-09-03,,

题目链接:https://vjudge.net/problem/2728294/origin

思路:可以抽象成管道,先试试能不能找到一个通道能通到终点,

如果可以则封锁这个通道,一个石头即可,

再试试能不能找到另一个通道能到达终点,

如果可以则再用一个石头封锁这个通道。

整个题目抽象成能不能找出两个独立的通道(如果不能说明需要公用一个管道),从起点流到终点。

为了充分利用格子,最合理化找出通道,应该选择靠边的方法找格子。

#include 
#include
using namespace std; const int n = (int)1e6 ;
char mp[n];
int vis[n];
int n,m; inline bool check(int x,int y){
return x>=&&x=&&y } bool dfs(int x,int y){ if( !check(x,y) || vis[x*m y] ) return false;
if( x*m y == n*m- ) return true;
vis[x*m y] = ; return dfs(x,y ) || dfs(x ,y);
} int main(){ scanf("%d%d",&n,&m); for(int i = ; i < n; i ){
scanf("%s",mp i*m);
for(int j = i*m; j < (i )*m; j ){ if(mp[j] == '#') vis[j] = ;
}
} bool flag = ;
for(int o = ; o <= ; o ){ vis[] = ;
if(!dfs(,)){
cout << o << endl;
flag = ;
break;
}
}
if(flag) cout << << endl; return ;
}

codeforces - 1214d d. island的相关教程结束。

网站地图