HDU2612 -暑假集训-搜索进阶N
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/N
这两天总是因为一些小错误耽误时间,我希望自己可以细心点。珍惜时间,珍爱生命!
#include<iostream>
#include<algorithm>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
#include<queue>
#include<stack>
using namespace std;
#define INF 0xfffffff
#define max(a, b) a>b?a:b
#define min(a, b) a<b?a:b
#define N 210
int dir[4][2]= {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
int m, n, visit[N][N];
char maps[N][N];
typedef struct maze
{
int x, y, s;
} MAZE;
MAZE a, b;
struct node
{
int t1, t2, t;
} p[N][N]; void BFS();
void bfs();
void print();
int main()
{
while(scanf("%d%d", &m, &n)!=EOF)
{
for(int i=0; i<m; i++)
{
getchar();
for(int j=0; j<n; j++)
{
scanf("%c", &maps[i][j]);
if(maps[i][j]=='Y')
{
a.x=i;
a.y=j;
a.s=0;
maps[i][j]='.';
}
if(maps[i][j]=='M')
{
b.x=i;
b.y=j;
b.s=0;
maps[i][j]='.';
}
}
}
memset(p, 0, sizeof(p));
memset(visit, 0, sizeof(visit));
BFS();
memset(visit, 0, sizeof(visit));
bfs();
print();
}
return 0;
}
void BFS()
{
queue<MAZE>Q;
Q.push(a);
MAZE v, w;
visit[a.x][a.y]=1;
while(!Q.empty())
{
w=Q.front();
p[w.x][w.y].t1=w.s;
Q.pop();
for(int i=0; i<4; i++)
{
v.x=w.x+dir[i][0];
v.y=w.y+dir[i][1];
v.s=w.s+1;
if(v.x>=0&&v.x<m&&v.y>=0&&v.y<n&&maps[v.x][v.y]!='#'&&visit[v.x][v.y]==0)
{
visit[v.x][v.y]=1;
Q.push(v);
}
}
}
}
void bfs()
{
queue<MAZE>q;
q.push(b);
visit[b.x][b.y]=1;
MAZE z, w;
while(q.size())
{
w=q.front();
p[w.x][w.y].t2=w.s;
q.pop();
for(int i=0; i<4; i++)
{
z.x=w.x+dir[i][0];
z.y=w.y+dir[i][1];
z.s=w.s+1;
if(z.x>=0&&z.x<m&&z.y>=0&&z.y<n&&maps[z.x][z.y]!='#'&&visit[z.x][z.y]==0)
{
visit[z.x][z.y]=1;
q.push(z);
}
}
}
}
void print()
{
int w=INT_MAX;
int ans;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
{
if(maps[i][j]=='@')
{
if(p[i][j].t1!=0&&p[i][j].t2!=0)
{
ans=p[i][j].t1+p[i][j].t2;;
if(ans<w)
{
w=ans;
}
}
}
}
printf("%d\n", w*11);
}
HDU2612 -暑假集训-搜索进阶N的更多相关文章
- poj3984《迷宫问题》暑假集训-搜索进阶
K - 迷宫问题 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:65536KB 64bit ...
- POJ-3126 暑假集训-搜索进阶F题
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/F 经验就是要认真细心,要深刻理解.num #include& ...
- Oil Deposits -----HDU1241暑假集训-搜索进阶
L - Oil Deposits Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB ...
- 2015UESTC 暑假集训总结
day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...
- 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开
[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题.首先,简单介绍一下八数码问题: 八数码问题也称为九宫问题.在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...
- 暑假集训Day2 互不侵犯(状压dp)
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...
- 暑假集训Day1 整数划分
题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...
- poj 1426 Find The Multiple 搜索进阶-暑假集训
E - Find The Multiple Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I6 ...
随机推荐
- 自己动手开发IOC容器
前两天写简历.写了一句:精通Spring IoC容器.怎么个精通法?还是自己动手写个IOC容器吧. 什么是IoC(Inversion of Control)?什么是DI(Dependency Inje ...
- Atitit.业务系统的新特性 开发平台 新特性的来源总结
Atitit.业务系统的新特性 开发平台 新特性的来源总结 1.1. 语言新特性(java c# php js python lisp c++ oc swift ruby go dart1 1.2. ...
- OpenLayers加载天地图
openlayer 是基于JavaScript的webGIS库 ,通过openlayer可以很容易的调用地图,并做相应的操作. 在head中载入openlayer的js文件: <link rel ...
- Android开发系列之系统源码目录
相信大家对于Google给出的那副经典Android架构图非常的熟悉,从下往上依次是Linux内核层(主要是负责硬件管理调度),HAL层(主要是硬件抽象层),libs层+Runtime,Framewo ...
- win10--vs2015--libjpeg--64位库的编译过程记录
win10--vs2015--libjpeg--64位库的编译过程记录 1. 下载源代码: http://libjpeg.sourceforge.net/ 或者 http://www.ij ...
- android Webview 实现js调用java代码实现Activity跳转
今天有了一个需求,在android里webview加载的html页面,要求点击html页面的按钮实现Activity的跳转. 咱是是菜鸟,webview的接触不多,于是就和度娘来了次亲密接触.在其中也 ...
- PHP压缩上传图片
最近手上的项目页面要显示很多图片,虽然用了jQuery的lazyload,但是效果并没理想,滑动到一个区域还要比较长的时间图片才完全显示出来.于是想着将上传上去的900KB+压缩备份一份缩略图. PH ...
- Educational Codeforces Round 27 F. Guards In The Storehouse
F. Guards In The Storehouse time limit per test 1.5 seconds memory limit per test 512 megabytes inpu ...
- 06 Memcached中的一些参数限制
一: Memcached中的一些参数限制 Key的长度:250字节(二进制协议支持65536个字节) value的限制:1M ,一般都是存储一些文本,如新闻标题等等这个值足够了, 内存的限制:32位下 ...
- 从零开始学android -- Service
废话不多说了,Service是四大组件之一,是一个后台处理长时间运行在主线程不需要依赖ui界面显示的应用组件,切记不能在service中做耗时操作,会阻塞主线程,要做也要在service中开个子线程做 ...