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 ...
随机推荐
- sqlplus登入和plsql登入的差别
以下是两种登入方式的截图.用sqlplus登入须要输入主机字: 假设是用本机的SQL*Plus连接本机的数据库.则"主机字符串"能够为空. 假设是从远程连接xp的oracle数据库 ...
- [LeetCode]Palindrome Number 推断二进制和十进制是否为回文
class Solution { public: bool isPalindrome2(int x) {//二进制 int num=1,len=1,t=x>>1; while(t){ nu ...
- Git--Bug解决篇
Git--公司bug解决篇 作为程序员,我们时常遇到这样的场景,公司的产品上线了,程序员们美滋滋的开始开发新功能希望得到更多的流量.这时候,公司上线的产品发生了很严重的bug,可是我们已经在这个bug ...
- zmqSocket 使用和相关java后台准备
zmqSocket.as 源码地址: http://zmqsocket-as.googlecode.com/svn/ zmqSocket.js 源码地址: http://zmqsocket-js.go ...
- Java并发编程(一)学习大纲
(一)学习大纲 (二)线程与并发编程的概念 (三)线程安全.原子操作.复合操作.竞态条件.加锁机制(内置锁.重入) (四)对象的共享:可见性.失效数据.非原子的64位操作,加锁与可见性,volatil ...
- 关于并发模型 Actor 和 CSP
最近在看<七天七并发模型>这本书,在书上介绍了 Actor 和 CSP 这两种并发模型.这两种模型很像,但还是有一些不同的地方.看完之后,比较困扰的是: 在什么场合使用哪种模型比较好呢? ...
- CardView的具体使用方法(转)
转载自:CardView的具体使用方法 因为学习做此记录方便查找使用 今天主要是CardView的用法,CardView是在安卓5.0提出的卡片式控件.首先介绍一下它的配置. 在gradle文件下添 ...
- vue实践---vue配合express实现请求数据mock
mock数据是前端比较常见的技术,这里介绍下vue配合express 实现请求数据mock. 第一步: 安装 express : npm install express -D 第二步: 简历需要mo ...
- react-native create-react-app创建项目报错SyntaxError: Unexpected end of JSON input while parsing near '...ttachment":false,"tar' npm代理
SyntaxError: Unexpected end of JSON input while parsing near '...ttachment":false,"tar' 错误 ...
- web安全之SQL注入---第五章 如何预防SQL注入 ?
5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a-zA-Z]{6,}$/5-1严格检查输入变量的类型和格式总结:其实就是做一些判断正则表达式:验证密码:/^[a ...