这是一个简易的Dijkstra算法的优化实现,利用了堆,这里使用C++中的优先级队列。利用STL内置的堆实现只是优化的第一步,更进一步的优化包括使用Fibonacci堆等更高级数据结构。算法中,使用邻接表作为存储图的数据结构,利用一个int数组d保存过程中及最后得到的最短路长度,再自定义一个pair...
分类:
编程语言 时间:
2014-09-09 19:58:49
阅读次数:
285
求最短路的算法最有名的是Dijkstra。所以一般拿到题目第一反应就是使用Dijkstra算法。但是此题要求的好几对起点和终点的最短路径。所以用Floyd是最好的选择。因为其他三种最短路的算法都是单源的。 输出字典序最小的路径则需要修改模版。#include#include#include#i...
分类:
其他好文 时间:
2014-09-06 21:14:03
阅读次数:
331
A星算法是经常利用到搜寻最短路径的算法,而相对于各种spfa,dijkstra等最短路算法,其最大的优势就是以一种贪心式的方法来逼近最优值,而非像spfa,dijkstra算法的较为盲目的搜索。 虽然可能在特殊设计出来的图上效率会与spfa,dijkstra相比较低,但是随机生成的图中其效率可...
分类:
其他好文 时间:
2014-09-06 19:57:03
阅读次数:
715
单源最短路径之dijkstra算法最优子问题:dis(s,...,e)是s到e的最短路径,在这条路径上的所有点之间dis(pi,pj)距离是最小的。算法思路:首先初始化,dis[s][i]是s到i的距离,直接相连的就是其距离,不直接相连的就是无穷大下面是算法主要模块:1.选取dis[i]最小的点加入...
分类:
其他好文 时间:
2014-09-02 00:03:43
阅读次数:
197
题目大意:
给出一个图,一个源点s,问距离这个源点的最短距离恰好为 l 的点有多少个(这个点可以在边上,可以在节点上)。
做法:
首先用dijkstra算法求出每个节点到s的最短路d[]数组,然后对于每条边w(u,v)来说有下面三种情况是合法的:
1:d[u]l
2:d[v]l
3:d[v]
对于上面每种情况,ans++,另外每个d[i]==l 的...
分类:
其他好文 时间:
2014-08-31 15:55:01
阅读次数:
182
这个写的很好:http://blog.csdn.net/zhongyanghu27/article/details/8221276dijkstra算法:先给出一个无向图用Dijkstra算法找出以A为起点的单源最短路径步骤如下算法模板:void dijkstra(int x){ int i,j...
分类:
其他好文 时间:
2014-08-27 18:10:58
阅读次数:
192
点击打开链接题目链接
畅通工程续
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 29275 Accepted Submission(s): 10660
Problem Description
某省...
分类:
其他好文 时间:
2014-08-27 13:07:17
阅读次数:
193
点击打开链接题目链接
HDU Today
Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15325 Accepted Submission(s): 3606
Problem Description
...
分类:
其他好文 时间:
2014-08-27 13:06:37
阅读次数:
162
题意:给定一个有向图,求从源点到其他各点的往返最短路径和。且这个图有一个性质:任何一个环都会经过源点。图中的节点个数范围:0~100w;分析: 我们先可以利用Dijkstra算法求解从源点到其余各点的最短距离,这样工作就完成了一半了。那么如何求解从各点到源点的最短路呢? 1. 我们可以循环n-1次,...
分类:
其他好文 时间:
2014-08-25 20:52:04
阅读次数:
328
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680Choose the best routeTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others...
分类:
其他好文 时间:
2014-08-20 21:05:22
阅读次数:
216