.....................用矩阵存..................... 1 int mp[N][N]; 2 bool p[N]; 3 int dist[N]; 4 void dijk(int s , int n) 5 { 6 int i , j , k ; 7 ...
分类:
其他好文 时间:
2015-07-23 21:32:00
阅读次数:
314
//最短路径/*Dijkstra(迪杰斯特拉)算法的核心思想是贪心策略+动态规划http://www.programgo.com/article/4721147659/Dijkstra算法能得出最短路径的最优解,但是效率低*/#include using namespace std;int main...
分类:
其他好文 时间:
2015-05-25 14:21:33
阅读次数:
552
五道水题,但要手快才好。。。我手慢了,E题目都没看完TAT....想了一发,很水,就是一遍Dijk即可,使用优先队列,同时记录由哪条边转移而来#include #include #include #include #include #include #define LL long longusing...
分类:
其他好文 时间:
2015-05-20 23:40:57
阅读次数:
169
前面分别介绍了“原生的Dijkstra”即毫无优化的Dijkstra,但这种Dijkstra的效率较低为n^n,因此面对较大数据量的时候需要对其进行优化,也就是优化所采用的贪心策略的实现,因此就有了Heao+Dijkstra堆优化的Dijkstra,但是堆优化的实现很复杂,而PriorityQueue+Dijkstra优先队列优化的Dijstra的效率虽然略低于堆优化的Dijkstra,但是实现却容易的多,也不容易出错,因为可以借助java类库中的PriorityQueue来实现,因此优先队列优化的Dijk...
分类:
Web程序 时间:
2015-05-11 10:55:46
阅读次数:
362
算法思想1.在一个图中,把所有顶点分为两个集合P,Q(P为最短路径集合,Q为待选集合),用dis数组保存源点到各个顶点的最短路径(到自身为0)。
2.初始化P集合,就是加入源点到该集合,并在mark数组标记(代码中的mark[y]=1),那么Q集合就是剩下的顶点构成了。
3.在Q集合中找到这样一个顶点:源点到该顶点(记为u)的路径最短,把该点加入P集合,列出以u为起点的所有边(终点记为v),判断...
分类:
编程语言 时间:
2015-04-22 11:41:13
阅读次数:
216
#include#include #include#include#includeusing namespace std;int map[100][100]={0};int book[100]={0};int dis[100]={0};//顶点 int n=0,m=0;int minn=99999;...
分类:
其他好文 时间:
2015-04-05 15:58:54
阅读次数:
130
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874题目大意:计算出要从起点到终点,最短需要行走多少距离。提供两种方法,第一种:dijkstra算法,很快的找到最小距离值;第二种:floyd算法,三个for循环,很容易超时,注意细节~代码一:dijk...
分类:
其他好文 时间:
2014-08-12 21:44:14
阅读次数:
373
枚举每两点的直线,看连线中是否存在线段交点,若存在,即这两点的直线不存在。建图,DIJK就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 cons...
分类:
其他好文 时间:
2014-07-25 02:31:24
阅读次数:
224