E - 白银

CSU - 1726

4月16日,日本熊本地区强震后,受灾严重的阿苏市一养猪场倒塌,幸运的是,猪圈里很多头猪依然坚强存活。当地15名消防员耗时一天解救围困的“猪坚强”。不过与在废墟中靠吃木炭饮雨水存活36天的中国汶川“猪坚强”相比,熊本的猪可没那么幸运,因为它们最终还是没能逃过被送往屠宰场的命运。

我们假设“猪坚强”被困在一个N*M的废墟中,其中“@”表示“猪坚强”的位置,“.”表示可以直接通过的空地,“#”表示不能拆毁的障碍物,“*”表示可以拆毁的障碍物,那么请问消防员至少要拆毁多少个障碍物,才能从废墟中救出“猪坚强”送往屠宰场?(当“猪坚强”通过空地或被拆毁的障碍物移动到废墟边缘时,视作被救出废墟)

Input

多组数据,第一行有一个整数T,表示有T组数据。(T<=100)

以下每组数据第一行有两个整数N和M。(1<=N,M<=100)

接着N行,每行有一个长度为M的字符串。

Output

一个整数,为最少拆毁的障碍物数量,如果不能逃离废墟,输出-1。

Sample Input

3
3 3
###
#@*
***
3 4
####
#@.*
**.*
3 3
.#.
#@#
.#.

Sample Output

1
0
-1

Hint

搜索水题,代码不难理解,就不说了

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>
#include <math.h>typedef long long LL;
typedef long double LD;
using namespace std;
const int  maxn=111;
char ma[maxn][maxn];
int vis[maxn][maxn];
//int f[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int f[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int N,M,T;
struct node
{int x,y;int step;friend bool operator <(node a,node b){return a.step>b.step;}
};
priority_queue<node>q;
bool OK(int x,int y)
{if(x>=0&&y>=0&&x<N&&y<M)return true;return false;
}
void bfs(node st)
{q.push(st);while(!q.empty()){node t=q.top();q.pop();for(int i=0;i<4;i++){int xx=t.x+f[i][0];int yy=t.y+f[i][1];if(!OK(xx,yy)){printf("%d\n",t.step);return;}if(vis[xx][yy]==0&&ma[xx][yy]!='#'){char ch=ma[xx][yy];if(ch=='*'){q.push((node){xx,yy,t.step+1});vis[xx][yy]=1;}if(ch=='.'){q.push((node){xx,yy,t.step});vis[xx][yy]=1;}}}}printf("-1\n");
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d%d",&N,&M);memset(vis,0,sizeof(vis));for(int i=0;i<N;i++)scanf("%s",ma[i]);while(!q.empty())q.pop();for(int i=0;i<N;i++){for(int j=0;j<M;j++){if(ma[i][j]=='@'){bfs((node){i,j,0});break;}}}}return 0;
}

转载于:https://www.cnblogs.com/107acm/p/9428316.html

E - 白银 CSU - 1726: 你经历过绝望吗?两次! 搜索相关推荐

  1. CSU 1726: 你经历过绝望吗?两次!

    题目传送门 平常不是很喜欢用 cin 和 cout 的,但是不知道为什么 scanf 就W了,cin 就 A了 ,应该是数据格式问题吧 代码: #include<cstdio> #incl ...

  2. CSUOJ 1726 你经历过绝望吗?两次!(BFS + 优先队列)

    1726: 你经历过绝望吗?两次! Description 4月16日,日本熊本地区强震后,受灾严重的阿苏市一养猪场倒塌,幸运的是,猪圈里很多头猪依然坚强存活.当地15名消防员耗时一天解救围困的&qu ...

  3. CSU 1726:你经历过绝望吗?两次! (BFS+优先队列)

    你经历过绝望吗?两次! Time limit:1000 ms Memory limit:131072 kB OS:Windows Problem Description 4月16日,日本熊本地区强震后 ...

  4. CSU 1726-你经历过绝望吗?两次!(BFS+剪枝)

    F - 你经历过绝望吗?两次! Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Subm ...

  5. 程序员面试快手后感慨:你们经历过绝望吗?三个面试官都是清华的

    一名程序员在面试完快手后如此感叹:快手的要求确实高,比阿里难进100倍,三个面试官都是清华的,全是问的acm和算法题. 所谓同行相轻,马上又网友评论:题刷得好不代表解决问题能力强,面试一般考一两个考察 ...

  6. 编译Spring5.0.x源码之一路坎坷,你经历过绝望吗?

    本文来说说在编译spring-springframework-5.0.x的路上,小编我到底经历了什么? 如果正在看文章你,恰好也想要研究spring源码,那么请先做好准备再动手,不然迎来的问题如滔滔江 ...

  7. csu1726 你经历过绝望吗?两次!

    4月16日,日本熊本地区强震后,受灾严重的阿苏市一养猪场倒塌,幸运的是,猪圈里很多头猪依然坚强存活.当地15名消防员耗时一天解救围困的"猪坚强".不过与在废墟中靠吃木炭饮雨水存活3 ...

  8. 你经历过绝望吗?两次!

    2个注意, 一个是优先级重写.利用,里面没有引用,然后是左大于右就排在后面. bool operator<(mynode ne1, mynode ne2) { return ne1.cost & ...

  9. java新人面试经历_分享近两周以来的真实面试经历

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 过一天,第二家,其实算是第一家真正的面试.北大方正集团,职位就是java后端开发实习生. 到了之后首先笔试,自我感觉做得不太好,后来直接HR过来面试,和我 ...

  10. 金市良臣:3.9黄金白银今日操作建议黄金何时止跌完成筑底解读

    文章摘要:现货黄金交易怎么规避风险减少亏损?现货黄金投资正确入场时机如何把握?新手炒黄金需要知道那些常识?黄金白银TD操作建议,黄金白银如何操作?黄金白银中长线如何布局?黄金白银TD还会涨吗?黄金白银 ...

最新文章

  1. 2022-2028年中国大气污染防治产业投资分析及前景预测报告
  2. docker 在容器外执行某个容器内的某个命令
  3. php抓取新浪微博数据抓取,php利用curl抓取新浪微博内容示例
  4. Linux中如何使用Htop监控工具?【网络安全】
  5. Go学习笔记—Go并发基础
  6. python爬虫从入门到放弃(六)之 BeautifulSoup库的使用
  7. 栈实现队列(队列实现栈)
  8. python中统计特征
  9. [BX]和loop指令06 - 零基础入门学习汇编语言28
  10. 代理模式———动态代理
  11. Flume avro client和hdfs sink 完成自定义目录文件收集
  12. 数据大屏适配解决方案
  13. java判断百分数_Java 验证前台返回的是不是百分数 在后台用正则表达式验证百分比数据...
  14. 《AngularJS深度剖析与最佳实践》一2.6 指令
  15. Imagination领先IP助力国产处理器 从芯片走向解决方案
  16. 每个人心中都有一艘小白船
  17. 台积电5nm光刻技术
  18. 搭建IIS服务器发布ASP网站
  19. 工业智能网关BL110应用之19:实现三菱 PLC FX2N 接入MQTT Client One云平台
  20. 优信php面试流程_上海优信智能科技有限公司

热门文章

  1. Flink kafka source sink 源码解析
  2. Android反编译与加密(代码混淆)
  3. 卧槽!华为工程师总结的Java笔记,太优秀了!
  4. 我给曾经暗恋的高中女同学,用Python实现了她飞机上刷抖音
  5. Android Multimedia框架总结(二)MediaPlayer框架及播放网络视频案例
  6. mysql 删除foreign key_MySQL-Foreign Key
  7. linux内核 list 使用,使用linux 内核中代码之--list
  8. sigmoid层的输出_keras如何多输入多输出,以及中间层输出
  9. 带存储功能的计算器是什么样的_19年中级会计考生能不能带计算器考试?今天统一回复!...
  10. 数据共享是未来?通用福特丰田联手推进自动驾驶标准制定...