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 ...
随机推荐
- Input 银行卡验证
$("#card_num").keyup(function(){ var op=""; var t=$("#card_num").val() ...
- Memcahed服务异常监控脚本
#!/bin/sh # filename: mon_mc.sh export MemcahedIp=$1export MemcahedPort=$2export NcCmd="nc $Mem ...
- 红米手机连接logcat,调试信息刷屏解决办法
我买了红米,平时拿它来当作安卓测试机的 可是把它接入eclipse里面,发现它会往logcat打印大量的日志,我自己想调试一个程序的时候,自己的程序的日志一会儿就被冲刷没了 新建一个logcat me ...
- SpringBoot项目的云服务器部署
1.场景还原 springboot配置相当简单,人人皆知.怎么把springboot工程部署到云服务器上呢?可能有人会说,博主你前篇不是讲了java工程的云部署把:但是我想澄清一点的是,我前篇的工程都 ...
- cxf + spring + maven 开发webservice
1.maven 配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...
- Swing实现右下角消息框
package com.ui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impo ...
- 自动make工具--CMake
http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html http://www.linuxidc.com/Linux/2015-10/ ...
- python 常用数据结构
#coding=utf- #元组,不可变序列(,) a=(,,,) print(a) a=tuple([,,,])#第二种定义方式 print(a) print(a[]) print(a[:]) #可 ...
- centos7.0 增加/usr分区的容量减少home分区的大小
把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home:tar cvf /tmp/home.tar /home #备份/homeumount /home ...
- GitHub 小试牛刀(踩坑记录)
首先要在GitHub上创建好远程仓库,把README,LISCENCE,.gitignore三个文件在远程仓库初始化好. 然后在创建本地仓库,先要cd到自己的项目目录下,然后: $ git init ...