poj 3463 Sightseeing dij

题目大意

  求最短路和比最短路长一个单位的次短路的个数。

 

分析

  求最短路和次短路。可以Dijkstra算法。采用邻接表建图(因为有重边)。

  松弛是要改成:

  1.if(x<最小)更新最小,次小;
    2.else if(x==最小)更新方法数;
    3.else if(x<次小)更新次小;
    4.else if(x==次小)更新方法数;

  在dijkstra的循环部分,我们要循环2*n次。因为题中我们要求最短路和次短路,最短路要n次遍历,而次短路也要n次遍历,这样两者加起来就为2*n次。

posted @ 2016-05-04 16:38  一个响亮的蒟蒻  阅读(80)  评论(0编辑  收藏  举报