分别以两个人的家作为起点,bfs求得到每个KFC最短距离。然后枚举每个KFC,求得时间之和的最小值即可。

此题不符合实际情况之处:  通过了一个KFC再去另一个KFC可以吗? 出题人都没好好想过吗?

AC代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = 200 + 5;

int d[2][maxn][maxn];
const int dx[] = {1,-1,0,0};
const int dy[] = {0,0,-1,1};

struct node{
	int x, y;
	node(){
	}
	node(int x, int y):x(x), y(y){
	}
};

int n, m;
char G[maxn][maxn];

bool in(int x , int y){
	if(x < 0 || y < 0 || x >= n || y >= m) return false;
	return true;
}

void bfs(int x, int y, int c){
	queue<node>q;
	d[c][x][y] = 0;
	q.push(node(x, y));
	while(!q.empty()){
		node p = q.front();
		q.pop();
		x = p.x, y = p.y;
		for(int i = 0; i < 4; ++i){
			int px = x + dx[i], py = y + dy[i];
			if(!in(px, py) || G[px][py] == '#' || d[c][px][py] != -1) continue;
			d[c][px][py] = d[c][x][y] + 1;
			//if(G[px][py] != 'Y' && G[px][py] != 'M' && G[px][py] != '@')
			q.push(node(px, py));
		}
	}
}

int main(){
	while(scanf("%d%d", &n, &m) == 2){
		memset(d, -1, sizeof(d));
		for(int i = 0; i < n; ++i) scanf("%s", G[i]);
		for(int i = 0; i < n; ++i)
		for(int j = 0; j < m; ++j){
			if(G[i][j] == 'Y') bfs(i, j, 0);
			else if(G[i][j] == 'M') bfs(i, j, 1);
		}

		int ans = 1 << 30;
		for(int i = 0; i < n; ++i)
		for(int j = 0; j < m; ++j){
			if(G[i][j] == '@' && d[1][i][j] != -1 && d[0][i][j] != -1){
				ans = min(ans, d[0][i][j] + d[1][i][j]);
			}
		}
		printf("%d\n", ans * 11);
	}

	return 0;
}

如有不当之处欢迎指出!

HDU - 2612 bfs [kuangbin带你飞]专题一的更多相关文章

  1. HDU - 3533 bfs [kuangbin带你飞]专题二

    看了好久的样例才看懂. 题意:有一个人要从(0,0)走到(n,m),图中有k个碉堡,每个碉堡可以向某个固定的方向每隔t秒放一次炮,炮弹不能穿越另一个碉堡,会被阻挡.人在移动的过程中不会被炮弹打到,也就 ...

  2. HDU - 1495 bfs [kuangbin带你飞]专题一

    模拟倒水的过程,每次可以把第i个杯子的水向第j个杯子里面倒,这可能出现新的状态,不停的更新状态,指导某两个杯子的水等于S/2说明找到答案,如果所有状态搜索完毕仍然不能均分,则退出. 注意:如果S是奇数 ...

  3. HDU - 2102 A计划 (BFS) [kuangbin带你飞]专题二

    思路:接BFS判断能否在限制时间内到达公主的位置,注意如果骑士进入传送机就会被立即传送到另一层,不会能再向四周移动了,例如第一层的位置(x, y, 1)是传送机,第二层(x, y, 2)也是传送机,这 ...

  4. HDU - 1241 dfs or bfs [kuangbin带你飞]专题一

    8个方向求联通块,经典问题. AC代码 #include<cstdio> #include<cstring> #include<algorithm> #includ ...

  5. UVA - 11624 多点bfs [kuangbin带你飞]专题一

    题意:某人身陷火场,总有k个点着火,着火点可向四周扩散,问此人能否逃离. 思路:可能有多个着火点,以这些着火点作为起点进行bfs,得到整个火场的最短距离,然后又以人所在坐标作为起点进行bfs,得到该人 ...

  6. POJ - 2251 bfs [kuangbin带你飞]专题一

    立体bfs,共有六个方向: const int dx[] = {0,0,1,-1,0,0}; const int dy[] = {1,-1,0,0,0,0}; const int dz[] = {0, ...

  7. FZU - 2150 bfs [kuangbin带你飞]专题一

    题意:两个人玩很变态的游戏,将一个草坪的某两个点点燃,点燃的草坪可以向上下左右四个方向扩散,问能否将整块草坪上面的草都点燃.如果能,输出最短时间(^_^他们就能玩更变态的游戏了),如果不能,输出-1. ...

  8. POJ - 3414 bfs [kuangbin带你飞]专题一

    状态搜索,每种状态下面共有六种选择,将搜索到的状态保存即可. d[i][j]表示状态A杯中水i升,B杯中水j升,总状态数量不会超过A杯的容量 * B杯的容量. AC代码 #include<cst ...

  9. POJ - 3984 bfs [kuangbin带你飞]专题一

    bfs搜索过程中将路径保存下即可. AC代码 #include<cstdio> #include<cstring> #include<algorithm> #inc ...

随机推荐

  1. OpenCv函数学习(一)

    Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...

  2. Linux磁盘热插拔命令

    对于支持热插拔SCSI技术的服务器,SCSI硬盘和磁带机可以在Linux下实现在线添加和移除,有两种方法实现,先说麻烦的 具体方法如下: 一. 添加或者删除硬盘/磁带机: # echo "s ...

  3. Servlet--取得session,application内置对象

    在前面的博客里面,使用Servlet取得了request,response,config对象,实际上通过Servlet程序也可以取得session,application等内置对象. 1,通过Http ...

  4. WebSphere--会话跟踪

    Web应用服务器具有会话跟踪(即跟踪用户请求)的功能.使用管理器的"会话跟踪"页面配置会话跟踪.会话跟踪程序可将同一用户的几个相关请求合并为单个会话(即一个 HttpSession ...

  5. git clone代码时候出现的报错

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Andale Mono"; color: #28fe14; backgr ...

  6. 05_Javascript进阶第二天

    String对象 res=str.charAt(1);//返回字符串中第n个字符(输出:i) res=str.charCodeAt(1);//返回第n个字符的ASCII编码(输出:105) res=S ...

  7. Html的<meta>标签使用方法及用例

    浏览器支持 所有浏览器都支持 <meta> 标签. 定义和用法 <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和 ...

  8. 基于 HTML5 WebGL 的 3D SCADA 主站系统

    这个例子的初衷是模拟服务器与客户端的通信,我把整个需求简化变成了今天的这个例子.3D 的模拟一般需要鹰眼来辅助的,这样找产品以及整个空间的概括会比较明确,在这个例子中我也加了,这篇文章就算是我对这次项 ...

  9. [TFRecord文件格式]基本介绍

    标准TensorFlow格式 TFRecords 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords可以允许你讲任意的数据转换为TensorFlow所支持的格式, 这种方法可以 ...

  10. transfer-webpack-plugin最简使用示例

    转移文件的插件 加载插件 $ npm install transfer-webpack-plugin --save-dev API new CopyWebpackPlugin(patterns: Ar ...