【Optimal Path】星门跳跃 链表+SPFA
来源:互联网 发布:linux下的dd命令 编辑:程序博客网 时间:2024/05/22 13:42
题目描述
在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
- 【Optimal Path】热浪 链表+SPFA
- 【裸SPFA】星门跳跃
- Rqnoj341星门跳跃
- 【星门跳跃】解题报告
- 【最短路】星门跳跃
- 星门跳跃-rqnoj-341
- 【rqnoj 341】星门跳跃
- short-path problem (Spfa)
- 【Optimal Path】Lift.cpp 奇怪的电梯
- RQNOJ 341 星门跳跃【解题报告】
- POJ 3126 Prime Path SPFA
- UVA 12295 Optimal Symmetric Paths (spfa + 记忆化搜索)
- poj 2112 Optimal Milking(spfa+二分+最大流)
- UVA 12295 Optimal Symmetric Paths(spfa+记忆化)
- 中国星跳跃
- 跳跃
- SPFA(Shortest Path Faster Algorithm)学习手记
- sql 脚本
- SSH
- hdu1002 (大整数相加)
- SSH三大框架的工作原理及流程
- 概念、定义
- 【Optimal Path】星门跳跃 链表+SPFA
- 比对两数据库中表与表 字段与字段的不同(1)
- Linux常用命令
- 用MyEclipse搭建SSH框架 Struts Spring Hibernate
- Hoj 1005 利用矩阵计算线性递推式
- java之lucene索引
- hive中间结果和结果的压缩
- 对项目经理的简单认识
- 在C++中通过模板规避潜在错误