点我看题目

题意  : 这个人在左下角,地铁在右上角,由很多格子组成的地图,每一条边都是一条路,每一条边都是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)的更多相关文章

  1. URAL 1291 Gear-wheels(BFS)

    Gear-wheels Time limit: 1.0 secondMemory limit: 64 MB - Arny! What happened with coordinator? Bad wo ...

  2. 递推DP URAL 1119 Metro

    题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...

  3. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  4. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  5. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

  6. 【BZOJ5492】[HNOI2019]校园旅行(bfs)

    [HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...

  7. 深度优先搜索(DFS)和广度优先搜索(BFS)

    深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...

  8. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

  9. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

随机推荐

  1. 灯笼Lantern下载及使用教程

    http://www.iyaxi.com/2015-11-17/732.html 最新科学上网QQ群群号:465166189点击链接加入群[翻越长城三群]:http://jq.qq.com/?_wv= ...

  2. 在DataTable中添加行和列数据

    DataRow newRow = dtResult.NewRow(); newRow["ProName"] = "名字"; newRow["ProPr ...

  3. cookie管理中的一些细节,转的

    1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1 ...

  4. TortoiseSVN 安装中文语言包,SVN中文语言包

    SVN中TortoiseSVN 是比较出门的一款SVN软件 TortoiseSVN 是Subversion 版本控制系统的一个免费开源客户端. 由于TortoiseSVN 默认是英文的:所以很多小伙伴 ...

  5. ASP.NET在IIS7中如何更改网站的.net framework框架版本

    IIS7安装好以后使用了.net 2.0 framework框架,经过折腾发现如下方法可以更改框架版本,从而可以部署使用其他版本框架开发的网站 方法一:建立网站时设置.net框架版本 方法二:对于已经 ...

  6. Xcode中添加代码块的方式

    在写代码的过程中,经常会有重复的代码(比如说,cell的使用),当然了复制粘贴也不是不行,但是Xcode提供了一个很方便的东西. 1.在Xcode右下角你会看到有一个{}的东西,这里是一些常用的代码块 ...

  7. NOPI读取EXCEL

    public void ReadEXCEL(string filePath) { IWorkbook wk = null; string extension = System.IO.Path.GetE ...

  8. wiegand/韦根

    韦根 参考: 1.wiegand/韦根驱动

  9. mysql学习笔记3

    要用php+mysql 首先要配置环境.现在要先下载wamp(Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python).直接安装就行 可以点下一步的就点下一步,直至 ...

  10. S.O.L.I.D

    S.O.L.I.D.是一组面对面向对象设计的最佳实践的设计原则.术语来自Robert C.Martin的著作Agile Principles, Patterns, and Practices in C ...