博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1506 拯救oibh总部
阅读量:5936 次
发布时间:2019-06-19

本文共 1252 字,大约阅读时间需要 4 分钟。

深搜 灌水

这题 我们就相当于求 路径上不经过 * 能到达边界的点有几个
然后我就可以从边界上开始灌水,染色,遇到 * 就 return
然后就相当于 没有被洪水填到的就是 不会到边界的节点

 

1 include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std ;10 11 const int dx[5] = { 0,1,0,0,-1},12 dy[5] = { 0,0,1,-1,0} ;13 int n,m,ans ;14 char a[501][501] ;15 16 inline bool pd(int xx,int yy) 17 {18 if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]=='0') return true ;19 return false ; 20 }21 22 void dfs(int x,int y ) 23 {24 int xx,yy ;25 for(int i=1;i<=4;i++) 26 {27 xx = x+dx[i] ;28 yy = y+dy[i] ;29 if(pd(xx,yy)) 30 {31 a[xx][yy] = '*' ;32 dfs(xx,yy) ;33 }34 }35 }36 37 int main() 38 {39 scanf("%d%d",&n,&m) ;40 for(int i=1;i<=n;i++) 41 scanf("%s",a[ i ]+1) ;42 for(int i=1;i<=n;i++) 43 {44 if(a[i][1]=='0') a[i][1] = '*',dfs(i,1) ; 45 if(a[i][m]=='0') a[i][m] = '*',dfs(i,m) ;46 }47 for(int i=1;i<=m;i++)48 {49 if(a[1][i]=='0') a[1][i] = '*',dfs(1,i) ;50 if(a[n][i]=='0') a[n][i] = '*',dfs(n,i) ;51 }52 ans = 0 ;53 for(int i=1;i<=n;i++) 54 for(int j=1;j<=m;j++) if(a[i][j]=='0') ans++ ;55 printf("%d\n",ans) ; 56 return 0 ;57 }

 

转载于:https://www.cnblogs.com/third2333/p/6850767.html

你可能感兴趣的文章
Spring boot 嵌入的tomcat不能启动: Unregistering JMX-exposed beans on shutdown
查看>>
【Windows】字符串处理
查看>>
Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
查看>>
CentOS使用chkconfig增加开机服务提示service xxx does not support chkconfig的问题解决
查看>>
微服务+:服务契约治理
查看>>
save
查看>>
Android DrawLayout + ListView 的使用(一)
查看>>
clear session on close of browser jsp
查看>>
asp.net mvc Post上传文件大小限制 (转载)
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
C语言中的随意跳转
查看>>
006-spring cloud gateway-GatewayAutoConfiguration核心配置-GatewayProperties初始化加载、Route初始化加载...
查看>>
WPF中如何将ListViewItem双击事件绑定到Command
查看>>
《聚散两依依》
查看>>