URAL 1119. Metro(BFS)
题意 : 这个人在左下角,地铁在右上角,由很多格子组成的地图,每一条边都是一条路,每一条边都是100米。还有的可以走对角线,问你从起点到终点最短是多少。
思路 : 其实我想说一下,,,,,这个题基本都是用DP做的,这是为什么呢?好吧,这要从我最近要刷BFS题开始,于是二货自己很厉害的用BFS做完了,所以就给我推荐了,我其实没看出来能用BFS来做。。。。。。。
//URAL 1119
#include <iostream>
#include <stdio.h>
#include <queue>
#include <math.h>
#include <string.h> using namespace std; int n,m ;
bool ch[][] ;
bool vis[][] ;
int dir[][] = {{,},{,}} ;
int k ;
double sum = 0.0 ;
struct node
{
int x ;
int y;
double step ;
} s,e,temp;
queue<node>que ; void BFS()
{
que.push(s) ;
s.step = 0.0 ;
memset(vis,false ,sizeof(vis)) ;
vis[s.x][s.y] = true ;
while(!que.empty())
{
temp = que.front() ;
que.pop() ;
if(temp.x == e.x && temp.y == e.y)
{
sum = temp.step ;
return ;
}
for(int i = ; i < ; i++)
{
int xx = temp.x+dir[i][] ;
int yy = temp.y+dir[i][] ;
if(xx >= && yy >= && xx <= n && yy <= m && !vis[xx][yy])
{
node temp1 ;
temp1.x = xx ;
temp1.y = yy ;
temp1.step = temp.step+100.0 ;
que.push(temp1) ;
vis[xx][yy] = true ;
}
}
if(ch[temp.x+][temp.y+])
{
vis[temp.x+][temp.y+] = true ;
node temp1 ;
temp1.x = temp.x+ ;
temp1.y = temp.y+ ;
temp1.step = temp.step+sqrt(2.0)*100.0 ;
que.push(temp1) ;
}
} }
int main()
{
scanf("%d %d",&n,&m) ;
scanf("%d",&k) ;
int u,v ;
memset(ch,false,sizeof(ch)) ;
for(int i = ; i < k ; i++)
{
scanf("%d %d",&u,&v) ;
ch[u][v] = true ;
}
s.x = , s.y = ;
e.x = n,e.y = m ;
BFS() ;
printf("%.0lf\n",sum) ;
return ;
}
URAL 1119. Metro(BFS)的更多相关文章
- URAL 1291 Gear-wheels(BFS)
Gear-wheels Time limit: 1.0 secondMemory limit: 64 MB - Arny! What happened with coordinator? Bad wo ...
- 递推DP URAL 1119 Metro
题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的广度优先搜索遍历(BFS)
图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 【BZOJ5492】[HNOI2019]校园旅行(bfs)
[HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
- 图的 储存 深度优先(DFS)广度优先(BFS)遍历
图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...
- 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)
一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...
随机推荐
- CentOS 7.x安装ELK(Elasticsearch+Logstash+Kibana)
第一次听到ELK,是新浪的@ARGV 介绍内部使用ELK的情况和场景,当时触动很大,原来有那么方便的方式来收集日志和展现,有了这样的工具,你干完坏事,删除日志,就已经没啥作用了. 很多企业都表示出他们 ...
- 使用VERT.X构建分布式企业级应用
谈到企业应用,就得谈分布式.低耦合.模块化.面向服务.可扩展性等等.早些时候的技术有CORBA和EJB,后面兴起的有WebService和MDB.但是这些技术不是学习.开发门槛高就是不那么轻量化.我现 ...
- 使用blktrace排查iowait cpu高的问题
本文转自这里,blktrace在这种情况下的使用方法值得借鉴学习. ------------------------------------------------------------------ ...
- ubuntu 16.04 chrome flash player 过期
今天手贱更新了系统,发现chrome flash插件过期了 解决方法: 使用全局代理打开 chrome $: google-chrome --proxy-server="socks5://1 ...
- 20150503-struts2入门-标签
一.几个标签介绍 1.property标签 property标签用于输出指定值: <s:set name="name" value="'kk'" /> ...
- GDI+中发生一般性错误之文件被占用
有多种原因可能导致这个异常出现,比如创建文件的权限不足.文件被占用等. 这里提供一个使用Stream读取图片避免文件被占用的方法. public Image GetImageFromStream(st ...
- [RMQ] [线段树] POJ 3368 Frequent Values
一句话,多次查询区间的众数的次数 注意多组数据!!!! RMQ方法: 预处理 i 及其之前相同的数的个数 再倒着预处理出 i 到不是与 a[i] 相等的位置之前的一个位置, 查询时分成相同的一段和不同 ...
- Where does Windows store MSI files for uninstallation?
Original link: Where does Windows store MSI files for uninstallation? Following content are only use ...
- [Effective Objective-C 读书笔记] 第1章 几条基本写法 (2~5条)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3575599.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- RabbitMQ RPC问题
1.服务器端代码:https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/python/rpc_server.py 2.客户端代码:htt ...