题目描述

在EVE游戏中,宇宙被划分成为许多区域,每个区域中都有数目不定的星门,可以通过星门来跳跃到特定的区域(星门是双向的)。
现在你正参与BBE联军与MLGBD联盟的会战,但由于飞船受损,需要尽快回到后方的友军空间站进行维护。
试编写程序,计算出所须的最短的返回空间站时间。
为了简化问题,我们约定飞船所在的位置为区域1,空间站所在的位置为区域N。

问题规模:
对于80%的数据,1<N<=10000,1<M<50000;
对于100%的数据,1<N<=30000,1<M<150000,1<=X[],Y[]<=N,1<=Z[]<=4096;

输入格式

第1行,两个整数N,M,分别为区域的总数和星门的总数;
第2..M+1行,每行三个整数X[i],Y[i],Z[i],分别为星门连接的两个区域,以及跳跃所需时间;

输出格式

一个整数,返回空间站所需的最短时间。

样例输入

样例一
5 3
1 4 5
4 5 1
1 2 7

样例二
10 11
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9
8 9 10
9 10 11
1 5 7
6 9 3

样例输出

样例一

6

样例二

28

最短路的题……

提交情况……N次90分最后发现是队列开小了……贴代码……王哥教导版本的……打算以后学王哥的链表了……

代码如下

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <string>const int maxN = 150010, _SIZE = 0xffff;
struct Edge
{int u, v, d; Edge *next; Edge() {}Edge(int v, int d, Edge *next):v(v), d(d), next(next) {}
} *edge[maxN]; bool marked[30002];
int q[10000000], dist[30002], n, m, S, T;inline void Ins(int u, int v, int d)
{edge[u] = new Edge(v, d, edge[u]);edge[v] = new Edge(u, d, edge[v]);return;
}inline void Spfa()
{static int f = 0, r = 0, u, v; static Edge *p;memset(dist, 0x4f, sizeof dist);for (dist[q[r++] = S] = 0, marked[S] = 1; f < r;)for (p = edge[u = q[f++]], marked[u] = 0; p; p = p -> next)if (dist[u] + p -> d < dist[v = p -> v]){dist[v] = dist[u] + p -> d;if (!marked[v]) marked[q[r++] = v] = 1;}return;
}int main()
{scanf("%d%d", &n, &m);while (m--){int u, v, d; scanf("%d%d%d", &u, &v, &d);Ins(u, v, d);}//scanf("%d%d", &S, &T);S = 1, T = n; Spfa();printf("%d\n", dist[T]);return 0;
}

【Optimal Path】星门跳跃 链表+SPFA相关推荐

  1. ACM算法--spfa算法--最短路算法

    求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm.      SPFA算法是西南交通大学段凡丁于1994年发表的.     从名字我们就可以看出,这种算 ...

  2. 1131. Subway Map (30)-PAT甲级真题 (DFS or 堆优化dij or SPFA)

    题意 给出地铁线路数n,分别给出每条线的站点数m,再依次列出站点id.然后询问k次从启点sv到终点ev的最短路径,如果最短路径相同,要求换乘最少的路径.最后按条件输出. 思路 1.用unordered ...

  3. 最短路径(SPFA算法)

    1200: 小明的难题 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 363 Solved: 103 [Submit][Status][Web Boar ...

  4. mongodb 存储过程 遍历表数据_三、redis数据存储之跳跃表(SKIP LIST)

    导读 前面文章[一.深入理解redis之需要掌握的知识点 ]中,我们对redis需要学习的内容框架进行了一个梳理.[二.redis中String和List两种数据类型和应用场景 ].[二.redis中 ...

  5. 跳跃表原理及redis跳跃表的应用

    跳跃表的实现还是一个链表,是一个有序的链表,在遍历的时候基于比较,但普通链表只能遍历,跳跃表加入了一个层(也叫索引)的概念,层数越高的元素越少,每次先从高层查找,再逐渐降层,直到找到合适的位置.从图中 ...

  6. Linux内核4.14版本——alsa框架分析(11)——DAPM(2)——widget、route和path的概念

    目录 1. DAPM的基本单元:widget(struct  snd_soc_dapm_widget) 2. widget的种类 3. widget之间的连接器:path(struct snd_soc ...

  7. 三、redis数据存储之跳跃表(SKIP LIST)

    导读 前面文章[一.深入理解redis之需要掌握的知识点 ]中,我们对redis需要学习的内容框架进行了一个梳理.[二.redis中String和List两种数据类型和应用场景 ].[二.redis中 ...

  8. spfa 单源最短路究极算法

    学习博客链接:SPFA 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm.      SPFA算法是西南交通大学段凡丁于1994年发表的.     从名 ...

  9. 图论算法之最短路径(Dijkstra、Floyd、Bellman-ford和SPFA)

    图论算法之最短路径(Dijkstra.Floyd.Bellman-ford和SPFA) 1.图论最短路径概述 图论算法为了求解一个顶点到另一个顶点的最短路径,即如果从图中某一顶点(称为源点)到达另一顶 ...

  10. 路径规划;a*算法 demo_路径规划A*算法

    (做封面图片,可真是费了很长时间) 前言 路径规划涉及到很多内容. 但路径规划的起点,应该都是A*这个来自斯坦福大学算法. 说起A*,网上有很多相关的内容.各种博客,各种解释. 但是我愣是没看明白. ...

最新文章

  1. 微信公众号网页获取用户信息
  2. 美学心得(第一百九十四集)罗国正
  3. Linux通过XAMPP集成软件包搭建LAMPP环境
  4. 英语写作中常见语法总结(二)
  5. emacs 新手笔记(四) —— 使用 dired 完成一些简单的文件和目录操作
  6. div不随滚动条左右移动而改变位置
  7. Java中的Volatile如何工作? Java中的volatile关键字示例
  8. python win10 连接hive_使用win10+python3.5+impyla 连接大数据平台hive表的步骤与问题解决...
  9. java 多队列_java多线程实现简单队列
  10. Storm概念学习系列之Task任务
  11. python colorbar位置大小调整_python - matplotlib相邻子图:添加colorbar更改子图的大小 - 堆栈内存溢出...
  12. Ubuntu PPPOE拨号
  13. 【转载+整理】EJB(三) EJB分层架构
  14. python学习之——假人配对
  15. MySQL中 begin 事务 begin ,第二个begin带自动提交功能???
  16. 【100%通过率】华为OD机试真题 Java 实现【处理器问题/ 高性能AI处理器】【2022.11 Q4 新题】
  17. 史上最全的CDN内容分发网络实战技巧(网络优化)
  18. 【机器学习】线性回归,多元线性回归、自回归及衡量指标
  19. 重读《大数据时代》:关于大数据的再认识
  20. html js音乐歌词滚动,如何用html+js实现音乐歌词同步播放器

热门文章

  1. nginx的安装以及简单代理域名
  2. java.lang.Byte常用方法
  3. Rotation - 旋转
  4. 智能家居十大必备功能 乐享真正智能生活
  5. 06.ESP8266驱动OLED屏
  6. <C++>一篇文章搞懂类和对象中常函数和常对象的实质以及避免空指针访问的小妙招
  7. 3GPP 5GNR 物理层协议梳理
  8. 下载3GPP协议的方法
  9. 什么是PPI,有什么作用?
  10. V神发布ETH2.0信标链首个硬分叉提案HF1,引入更公平的节点惩罚机制