最短路径专题小结(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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值