最短路径专题小结(2018.8.15)

最短路,是图论相关算法中最常见也是最基础的问题。

求单源最短路径,最常使用的算法是dijkstra算法。这次学习曲线略陡峭,特别是看着学姐给的一份用邻接表存图的代码来入门,心里苦啊。。。。

我先把邻接表如何存图这个问题啃下来,然后才真正开始研究dijkstra算法。

ok,先总结一下邻接表,邻接表我采用STL中的容器嵌套实现的。举例:

struct CNode
{
    int k;//终点
    int w;//权重
}
vector<vector<CNode> > S;

这里的S就是邻接表啦,例如S[1][2]是一个结构体,1代表一条边的起点,emmm,2不代表该边终点 ,S[1][2].k代表该边终点,S[1][2].w代表这条边的权重。这样存图表面看起来比邻接矩阵麻烦,其实是为之后采用优先队列优化时间复杂度作准备的。

dijkstra算法:

例题:https://vjudge.net/contest/246370#problem/G

 

 

 

最小生成树适用于:路线要经过所有点。

 

Dijkstra 适用于:不需经过所有点,只需起点到终点最短路径

 

 

第五个专题

 

A - Eddy's picture   最小生成树

B - Jungle Roads    最小生成树

C - Qin Shi Huang's National Road System没做出来

D - 最短路   dijkstra

E – Shopping  没做出来

F - 最短路径问题 dijkstra  (数据量大,请使用scanf

G - 一个人的旅行 dijkstra

H - find the longest of the shortest  没做出来

I – Arbitrage 没做出来

J - Saving James Bond  

K - HDU Today   dijkstra ,起点与终点相同时,要输出0

 

 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务