HDU/HDOJ 2612 Find a way 双向BFS

 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612

思路:从两个起点出发,有多个终点,求从两个起点同时能到达的终点具有的最小时间,开两个数组分别保存两个起点到达每一个终点的用时,最后将两个

数组里的时间加起来求最小的一组,必须对应相加,因为终点必须同时到达。

 

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
#include <sstream>
#include <cstdlib>
#include <fstream>
#include <queue>
using namespace std;
struct node{int x,y,step;
}a[1010];
node p,q;
int n,m,sx1,sy1,sx2,sy2,ans1[1010],ans2[1010],ans[1010];
int mmin,cnt;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};  
char maze[205][205];
bool visit[205][205];
int judge(int x,int y){for(int i=1;i<cnt;i++){if(x==a[i].x&&y==a[i].y)return i;}return 0;
}
void bfs1(int x,int y){memset(ans,0,sizeof(ans));memset(ans1,-1,sizeof(ans1));memset(visit,0,sizeof(visit));queue<node> Q;p.x=x;p.y=y;p.step=0;Q.push(p);visit[p.x][p.y]=1;while(!Q.empty()){p=Q.front();Q.pop();int num=judge(p.x,p.y);if(num){ans[num]=p.step;visit[p.x][p.y]=1;}for(int i=0;i<4;i++){q.x=p.x+dir[i][0];q.y=p.y+dir[i][1];q.step=p.step+1;if(q.x<0||q.x>=n||q.y<0||q.y>=m)continue;if(visit[q.x][q.y])continue;if(maze[q.x][q.y]=='#')continue;Q.push(q);visit[q.x][q.y]=1;}}for(int i=1;i<cnt;i++){if(ans[i])ans1[i]=ans[i];}}
void bfs2(int x,int y){memset(ans,0,sizeof(ans));memset(ans2,-1,sizeof(ans2));memset(visit,0,sizeof(visit));queue<node> Q;p.x=x;p.y=y;p.step=0;Q.push(p);visit[p.x][p.y]=1;while(!Q.empty()){p=Q.front();Q.pop();int num=judge(p.x,p.y);if(num){ans[num]=p.step;visit[p.x][p.y]=1;}for(int i=0;i<4;i++){q.x=p.x+dir[i][0];q.y=p.y+dir[i][1];q.step=p.step+1;if(q.x<0||q.x>=n||q.y<0||q.y>=m)continue;if(visit[q.x][q.y])continue;if(maze[q.x][q.y]=='#')continue;Q.push(q);visit[q.x][q.y]=1;}}for(int i=1;i<cnt;i++){if(ans[i])ans2[i]=ans[i];}
}
int main()
{//ifstream fin;//fin.open("data1.txt");while(cin>>n>>m){cnt=1;for(int i=0;i<n;i++)for(int j=0;j<m;j++){cin>>maze[i][j];if(maze[i][j]=='Y'){sx1=i;sy1=j;}if(maze[i][j]=='M'){sx2=i;sy2=j;}if(maze[i][j]=='@'){a[cnt].x=i;a[cnt++].y=j;}}mmin=999999;bfs1(sx1,sy1);bfs2(sx2,sy2);for(int i=1;i<cnt;i++){if(ans1[i]!=-1&&ans2[i]!=-1){int tsum=ans1[i]+ans2[i];if(mmin>tsum)mmin=tsum;}}cout<<mmin*11<<endl;}return 0;}


 

 

转载于:https://www.cnblogs.com/snake-hand/p/3144771.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言之动态分配空间

void method_four(){int *p ;p (int *) malloc(10*sizeof(int)); //申请动态int类型空间for(int i 0 ;i < 5 ;i){p[i] i1;printf("%d\n",p[i]);} free(p); //释放空间 }

netty半包粘包 处理_netty解决粘包半包问题

前言&#xff1a;开发者用到TCP/IP交互时&#xff0c;偶尔会遇到粘包或者半包的数据&#xff0c;这种情况有时会对我们的程序造成严重的影响&#xff0c;netty框架为解决这种问题提供了若干框架1. LineBasedFrameDecoder&#xff1a;通过在包尾添加回车换行符 \r\n 来区分整包消…

switch循环

import java.util.Scanner;/*** author Alina* date 2021年10月10日 10:07 下午* switch (表达式) { case 1:* 语句体1;* break;* case 2:* 语句体2;* …

csgo手机上看demo_csgo看demo所有指令

csgo中有许许多多的指令我们可能都用得上&#xff0c;比如设置准星的指令抑或是看Demo的指令。那么今天小编就带大家看看这些看Demo的指令吧。正确答案以demo文件名为 nip.dem为例&#xff0c;Steam安装目录以我的F:/Steam为例1&#xff1a;复制demo文件&#xff0c;放到 \Stea…

C语言输出格式

1 一般格式printf(格式控制&#xff0c;输出表列&#xff09;例如&#xff1a;printf("i%d,ch%c\n",i,ch);说明:(1)“格式控制”是用双撇号括起来的字符串&#xff0c;也称“转换控制字符串”&#xff0c;它包括两种信息&#xff1a;①格式说明&#xff1a;由“%”和…

(Java)反射与文档注释

package com.reflect.test;/*** author Alina* date 2022年02月01日 6:09 下午*/ public class Demo1 {public void method(){System.out.println("Demo1...method");} } package com.reflect.test;import java.lang.annotation.ElementType; import java.lang.anno…

JQ基础练习---图片划过变暗

简单分享下&#xff0c;划过一张图片其余图片变暗&#xff0c;图片划过变暗的简单效果&#xff0c;JQ实现主要是css写法跟思路变化。 <script src"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type"text/javascript"></sc…

postman启动没反应_Linux 0.12上古源码学习(二)-Bochs模拟Linux 0.12内核的启动与运行...

上篇已经初步实现用Bochs仿真了一个X86程序。今天尝试启动早期的Linux 0.12内核。官网上已经有编译好的Linux 0.12启动镜像及根文件系统镜像。我们可以直接下载下来先使用&#xff0c;后面的文章会详细介始如何编译生成这些镜像文件。Index of /Linux.old/bochs-images/​www.o…

[bbk4343]小布-OCP 042全真试题讲解

参考视频: [bbk4343]小布-OCP 042全真试题讲解 1、You are in the middle of a transaction and very crucial data has been modified.Because of a hardware failure,the instance has shutdown before synchronizing all the database files.Which two statements are true …

vscode 搭建web工程_Dubbo 分布式架构搭建教育 PC 站

架构设计与环境搭建项目架构项目介绍教育 PC 站是提供给学员观看技术视频的网站。学员使用手机号注册登录后&#xff0c;可以选择适合自己的课程&#xff0c;并观看课程视频&#xff0c;当然&#xff0c;有免费的课程&#xff0c;也有 VIP 专属课程。技术选型前端技术选型Vue.j…

mysql 之jdbc idea版

安装时注意jdk mysql 驱动版本 package com.jdsc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;/*** author Alina* date 2022年02月04日 11:11 下午*/ public class jdbsdemo2 {public static voi…

使用jdbc执行SQL实现登录查询1-带配置文件和工具类

1.jdbc.properties 配置文件 url jdbc:mysql:///db2 user root password 12345678 driver com.mysql.cj.jdbc.Driver 2.Utils.JDBCUtils抽取的工具类 package Utils;import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.sql.*; im…

jdk 环境变量_Windows下jdk下载安装与环境变量配置

下载安装jdk百度搜索jdk版本&#xff0c;以1.8版本为例&#xff0c;百度搜索“jdk1.8”&#xff0c;一般是第一个。百度搜索jdk1.8打开jdk下载页面&#xff0c;这里我们下载jdk1.8 x64版本下载地址&#xff1a;jdk1.8下载地址jdk1.8下载页面下载历史版本的jdk自动跳转登录&…

路由器配置的问题

刚刚买了个路由器&#xff0c;配置起来很容易吧&#xff0c;像往常一样&#xff0c;连接路由器&#xff0c;按照配置过程配置完毕&#xff0c;打开网页&#xff0c;bingo~&#xff0c;上不去网&#xff0c;为啥呢&#xff1f; 然后断开路由器&#xff0c;直接连接网线&#xff…

使用jdbc执行SQL实现登录查询2-避免SQL注入版

配置文件及工具类参考1 package com.jdsc;import javax.rmi.CORBA.Util; import java.sql.*; import java.util.Scanner;/*** author Alina* date 2022年02月06日 12:13 上午* 判断用户登录是否成功* 使用prepareStatement 执行SQL谨防SQL注入*/ public class jdbcDemo7 {publ…

一般试卷的纸张大小是多少_考试试卷统一设置标准规格要求

常用纸张按尺寸可分为A和B两类:A类就是我们通常说的大度纸&#xff0c;整张纸的尺寸是889*1194mm&#xff0c;可裁切A1(大对开&#xff0c;570*840mm)、A2(大四开&#xff0c;420*570mm)、A3(大八开&#xff0c;285*420mm)、A4(大十六开&#xff0c;210*285mm)、A5(大三十二开&…

上传文件

java实现文件上传&#xff0c;参看: 用commons-fileupload-1.2 实现文件上传 转载于:https://www.cnblogs.com/chaoguo1234/p/3156700.html

js true false 转0 1_「0-1岁」早产儿何时一段转二段奶粉

早产儿指的是37周之前出生的宝宝&#xff0c;想必足月宝宝来说&#xff0c;早产宝宝各方面发育都不完善&#xff0c;所以家长在照顾的时候要格外细心。当早产儿出生后&#xff0c;应当先喝早产儿奶粉&#xff0c;等身体发育发育到一定程度时&#xff0c;才更换奶粉。那么早产儿…

使用jdbc执行SQL实现登录查询3 -事务查询版

package com.jdsc;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement;/*** author Alina* date 2022年02月06日 2:51 下午* 开启事务管理数据库&#xff0c;如果事务有异常则回滚到之前的状态* JDBC控…