题意很简单,给出图,找出从S到F两个点之间的最短路和比最短路长1的次短路的条数之和。
改进Dijkstra算法,。将状态扩展到二维,第一维仍然是顶点编号,第二维的长度为2,分别用于记录最短路和次短路。这样的数据有两个,dist[][2]记录距离,cnt[][2]计数。
更新状态时:1)新值小于最短路径长:更新最短路径长,计数;次短路径长,计数2)新值等于最短路径长:更新最短路径计数3)新值大于最短路径长,小于次短路径长:更新次短路径长,计数4)新值等于次短路径长:更新次短路径计数
值得注意的是,题目图有重边,所以不能用邻接矩阵存储。
posted on 2010-05-07 19:38 David Liu 阅读(1804) 评论(0) 编辑 收藏 引用 所属分类: 图论
Powered by: C++博客 Copyright © David Liu