https://vjudge.net/contest/65959#problem/I

代码暂时有问题,所以暂时不要看

题目大意

一块地上面有草和空地,有两个人想要把草烧光,这样他俩就可以开心的OOXX,他俩都要在一块地上放火(每人只能放一次),可以在相同或者不同的位置放,火可以向四周蔓延,蔓延一次话费1分钟,问他俩把这块地上草烧完所用到的最小时间。

解题思路

这个思路是我看一个大神的,感觉很好,就是将两人所能放火的位置都试一遍,比较得出所用最短的时间,具体用的是一个结构体数组将所有有草的位置全都记录下来,然后对它两两进行所有组合进行BFS。求出它们各自所花费的时间。

代码

# include<stdio.h>
# include <queue>
# include <string.h>using namespace std;
# define max 11struct node
{int x, y, step;
}v[105];char num[max][max];
int dir[4][2] = {{1,0},{-1,0}, {0,1}, {0,-1}};//四个方向
int T, m, n;
int array[max][max];int PAN()
{int i, j;for(i = 0; i<n; i++)for(j = 0; j<m; j++){if(num[i][j] == '#' && array[i][j] == 0)//判断又没用将草烧完,,array[i][j] = 0时代表草没有烧 {return 0;}}return 1;
}int BFS( node s, node q )
{queue<node>Q;Q.push(s);Q.push(q);array[s.x][s.y] = array[q.x][q.y] = 1;//标记起始位置已经烧过 while(Q.size()){s = Q.front();Q.pop();for(int i = 0 ;i<4; i++){q = s;q.x +=dir[i][0];q.y +=dir[i][1];if(q.x>=0 && q.x<m && q.y >=0 && q.y<n && array[q.x][q.y] == 0 && num[q.x][q.y] == '#'){q.step +=1;array[q.x][q.y] = 1;Q.push(q);}}}return s.step;
}int main(void)
{int i,j, k,t;scanf("%d",&T);for(i = 1; i<=T; i++){t = 0;int ans = 99999;scanf("%d%d",&n,&m);for(j = 0; j<n; j++){scanf("%s",num[j]);for(k = 0; k<m; k++){if(num[j][k] == '#'){v[t].x = j;v[t].step = 0;v[t++].y = k;}}}  for(j = 0; j<t; j++)//求出任意两个位置最少话费的时间 {for(k = j; k<t; k++){memset(array, 0, sizeof(array));int l = BFS(v[j], v[k]);if(l<ans && PAN()){ans = l;}}}if(ans == 99999){printf("Case %d: -1\n",i);}else{printf("Case %d: %d\n",i, ans);}}   return 0;
} 

I - Fire Game相关推荐

  1. fzu 2150 Fire Game 【身手BFS】

    称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...

  2. fire.php,Fire PHP

    项目介绍: Fire PHP 是基于 PHP JavaScript开发的跨平台的Firefox 的扩充套件,即PHP调试插件,可以帮你debug 后端PHP 的程式,其使用的技术跟某些IDE 一样,要 ...

  3. ZOJ1002 Fire Net(非递归版)

    以前用递归的回溯搜索思路做过一次,参见ZOJ1002 Fire Net(递归版),今天想着用非递归的方法试试看,呵呵,比我想象中要难啊,主要还是堆栈里究竟放什么,这一点上思路一直没理清.因此用了整整一 ...

  4. UVA11624 Fire!(bfs)

    相信大家已经读过题目了,我就搬一下洛谷的翻译: 题目大意 你的任务是帮助Joe走出一个大火蔓延的迷宫.Joe每分钟可以走到上下左右4个方向的相邻格子之一,而所有着火的格子都会四周蔓延(即如果某个空格子 ...

  5. J - Fire! UVA - 11624

    J - Fire! UVA - 11624 题意:火每次能烧到上下左右,人碰到非墙的边界则逃火成功,求最短的逃离时间. 由于bfs每个位置最多入队出队一次,所以复杂度为 1e6 一发bfs直接TLE, ...

  6. 1709: Fire or Retreat(zzuli)

    水题,哎,可是第一次是因为编译错了,vs不知咋了,无奈: 后面几次又因为类型用了int错了,痛苦: 题目描述 在与科技水平远胜于我们的外星人的战斗最后,我们能够用来对外星装甲造成伤害的武器只剩下了-- ...

  7. xmpp 服务器配置 open fire for windows 及 spark 测试

    xmpp 服务器配置 open fire for windows 此文章为 XMPP windows服务器配置,使用的是 open fire 3.9.1.exe 1: 下载 open fire ope ...

  8. python3 命令行参数处理库 argparse、docopt、click、fire 简介

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse.docopt.click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. 本文作 ...

  9. Fire Workflow FAQ

    Fire Workflow 的Eclispe设计器插件上传到google code ,并有较详细的文档(2_通过设计器和模拟器快速了解Fire       Workflow.pdf,3_各种工作流模式 ...

  10. UVA11624 Fire!

    题目: 乔在迷宫中工作.不幸的是,迷宫的一部分着火了,迷宫的主人没有制定火灾的逃跑计划.请帮助乔逃离迷宫.根据乔在迷宫中的位置以及迷宫的哪个方块着火,你必须确定火焰烧到他之前,乔是否可以离开迷宫,如果 ...

最新文章

  1. 20172318 2016-2017-2 《Java程序设计》第一周学习总结
  2. 深入Managed DirectX9(四)
  3. MySQL高级in和not in
  4. Jmeter远程测试
  5. Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP
  6. ubuntu不锁屏设置
  7. java 定时关机_java实现电脑定时关机的方法
  8. 网站建设基本流程,要注意什么?
  9. Java毕设项目-社区居民健康档案管理系统
  10. 数学建模-SARS疫情对某些经济指标影响例题
  11. python爬取网页数据步骤_如何轻松爬取网页数据?
  12. MyExcel 2.1.3 发布,提供行级读取处理能力
  13. mysql idb 恢复_mysql靠idb文件恢复数据
  14. 北邮校长方滨兴将离职 临别奉送学生“六好”锦囊
  15. 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
  16. 使用 Keras 进行面部表情识别
  17. 嵌入式图形解决方案升级!RT-Thread Smart成功支持ARM Mali GPU
  18. macos各版本汇总
  19. 硬件常见问题——信号过冲
  20. 唱响艾泽拉斯_职业篇

热门文章

  1. 【Unity3D插件】uMMORPG插件介绍《PRG类游戏框架插件》
  2. CNAS检测实验室之:内部审核和管理评审的区别
  3. Cisco packet tracer ASA5500系防火墙的基本配置
  4. 使用Snagit安安静静的截屏并保存
  5. 部落卫队 解题报告
  6. 2012年2月上旬我国网络不良与垃圾信息分析报告
  7. 前言 Preface
  8. 无源蜂鸣器与播放音乐(总结)
  9. 【毕业设计】深度学习车道线检测系统 - python 机器视觉
  10. 新版本微信拆红包按钮“開”的判定--AccessibilityService