简单bfs(hdu2612)
#include<stdio.h>
#include<string.h>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
//hdu2612,Y,M不能走
int s[210][210],lg[210][210],lg1[210][210];
int n,m;
struct node
{
int x;//hang
int y;//lie
}a,b,d[4050];
int bfs1(int a3,int b3)
{
queue<node> q;
a.x=a3;
a.y=b3;
q.push(a);
while(!(q.empty()))
{
a=q.front();
q.pop();
b.x=a.x+1,b.y=a.y;
if(b.x<n&&lg[b.x][b.y]==0&&s[b.x][b.y]==0)
lg[b.x][b.y]=lg[a.x][a.y]+1,q.push(b);
b.x=a.x-1,b.y=a.y;
if(b.x>=0&&lg[b.x][b.y]==0&&s[b.x][b.y]==0)
lg[b.x][b.y]=lg[a.x][a.y]+1,q.push(b);
b.x=a.x,b.y=a.y+1;
if(b.y<m&&lg[b.x][b.y]==0&&s[b.x][b.y]==0)
lg[b.x][b.y]=lg[a.x][a.y]+1,q.push(b);
b.x=a.x,b.y=a.y-1;
if(b.y>=0&&lg[b.x][b.y]==0&&s[b.x][b.y]==0)
lg[b.x][b.y]=lg[a.x][a.y]+1,q.push(b);
}
return 0;
}
int bfs2(int a4,int b4)
{
queue<node> q;
a.x=a4;
a.y=b4;
q.push(a);
while(!(q.empty()))
{
a=q.front();
q.pop();
b.x=a.x+1,b.y=a.y;
if(b.x<n&&lg1[b.x][b.y]==0&&s[b.x][b.y]==0)
lg1[b.x][b.y]=lg1[a.x][a.y]+1,q.push(b);
b.x=a.x-1,b.y=a.y;
if(b.x>=0&&lg1[b.x][b.y]==0&&s[b.x][b.y]==0)
lg1[b.x][b.y]=lg1[a.x][a.y]+1,q.push(b);
b.x=a.x,b.y=a.y+1;
if(b.y<m&&lg1[b.x][b.y]==0&&s[b.x][b.y]==0)
lg1[b.x][b.y]=lg1[a.x][a.y]+1,q.push(b);
b.x=a.x,b.y=a.y-1;
if(b.y>=0&&lg1[b.x][b.y]==0&&s[b.x][b.y]==0)
lg1[b.x][b.y]=lg1[a.x][a.y]+1,q.push(b);
}
return 0;
}
int main()
{
int a1,b1,a2,b2;
int min;
int i,j,k;
char c;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(lg,0,sizeof(lg));
memset(lg1,0,sizeof(lg1));
memset(s,0,sizeof(s));
a1=a2=b1=b2=0;
k=0;
for(i=0;i<n;i++)
{
getchar();
for(j=0;j<m;j++)
{
scanf("%c",&c);
if(c=='Y')
a1=i,b1=j,s[i][j]=1;
else if(c=='M')
a2=i,b2=j,s[i][j]=1;
else if(c=='@')
{
d[k].x=i;
d[k].y=j;
k++;
}
else if(c=='#')
s[i][j]=1;
}
}
min=INF;
bfs1(a1,b1);
bfs2(a2,b2);
for(i=0;i<k;i++)
{
//printf("%d %d\n",lg[d[i].x][d[i].y],lg1[d[i].x][d[i].y]);
if(lg[d[i].x][d[i].y]+lg1[d[i].x][d[i].y]<min&&lg[d[i].x][d[i].y]!=0&&lg1[d[i].x][d[i].y]!=0)//小心Y或M到不了@的情况
min=lg[d[i].x][d[i].y]+lg1[d[i].x][d[i].y];
}
min=min*11;
printf("%d\n",min);
}
return 0;
}
简单bfs(hdu2612)的更多相关文章
- LightOJ 1012 简单bfs,水
1.LightOJ 1012 Guilty Prince 简单bfs 2.总结:水 题意:迷宫,求有多少位置可去 #include<iostream> #include<cstr ...
- POJ3185(简单BFS,主要做测试使用)
没事做水了一道POJ的简单BFS的题目 这道题的数据范围是20,所以状态总数就是(1<<20) 第一次提交使用STL的queue,并且是在队首判断是否达到终点,达到终点就退出,超时:(其实 ...
- 【POJ 3669 Meteor Shower】简单BFS
流星雨撞击地球(平面直角坐标第一象限),问到达安全地带的最少时间. 对于每颗流星雨i,在ti时刻撞击(xi,yi)点,同时导致(xi,yi)和上下左右相邻的点在ti以后的时刻(包括t)不能再经过(被封 ...
- hdu1312 Red and Black 简单BFS
简单BFS模版题 不多说了..... 直接晒代码哦.... #include<cstdlib> #include<iostream> #include<cstdio> ...
- 逃脱 (简单BFS)
题目传送门 G逃脱 题目描述 这是mengxiang000和Tabris来到幼儿园的第四天,幼儿园老师在值班的时候突然发现幼儿园某处发生火灾,而且火势蔓延极快,老师在第一时间就发出了警报,位于幼儿园 ...
- poj2251 三维简单BFS
D - (热身)简单宽搜回顾 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- hdu2717Catch That Cow 简单BFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717 刚开始思路错了,用的DP,一直WA,后来才发现是搜索,还是简单的BFS,顿时.... 思路: B ...
- luogu 2296 寻找道路 简单BFS
简单的BFS,练习基础 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #defi ...
- poj 3414(简单bfs)
题目链接:http://poj.org/problem?id=3414 思路:bfs简单应用,增对瓶A或者瓶B进行分析就可以了,一共6种状态. #include<iostream> #in ...
随机推荐
- JDBC学习笔记(四)
减少各个Dao类间的重复代码,有以下几种方式: 写一个DBConnectionManager,将公共的查询逻辑做成方法,将sql语句作为参数传递给方法. public class DBConnecti ...
- COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]
传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于100%的 ...
- Effective Java 第三版——32.合理地结合泛型和可变参数
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- [代码]JAVA触发器,Spring的quartz配置
Spring的quartz中的配置代码,spring-quartz.xml: <?xml version="1.0" encoding="UTF-8"?& ...
- Centos7搭建FTP服务器
从网上搜索了好多搭建Centos7搭建服务器的教程都没有成功唯独这个,利用Windows资源管理器连接测试成功. 一.通过yum安装vsftpd yum install -y vsftpd 二.修改v ...
- 用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)
容器按照持续运行的时间可分为两类:服务类容器和工作类容器. 服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等.工作类容器则是一次性任务,比如批处理程序,完成后容 ...
- 插上腾飞的翅膀:为asp.net core添加protobuf支持
没时间解释了,快上车. 通过NuGet获取Zaabee.AspNetCoreProtobuf Install-Package Zaabee.AspNetCoreProtobuf 在Startup.cs ...
- Angular4---部署---Angular 与 Nginx的邂逅
Nginx + Angular结合操作 1.下载Nginx , 根据自己的版本下载Nginx,关于Nginx配置,请看https://www.cnblogs.com/MBirds/p/6605366. ...
- gitlab wiki 500
记录一次使用gitlab各种报500的问题,并怎么解决的描述下 一.问题背景 描述我第一次使用wiki的步骤: 二.问题描述 之后我进行任何合法的操作(创建页面使用全英文名称:页面不做任何修改,只是点 ...
- centos7设置静态ip
动态ip可以上网.静态ip设置成功后,发现不能上网. 1.首先查看动态ip的默认网关 cat /etc/resolv.conf 2.设置配置文件 在 /etc/sysconfig/network-sc ...