昂贵的聘礼.docVIP

  • 1
  • 0
  • 约2.62千字
  • 约 4页
  • 2018-05-28 发布于河南
  • 举报
昂贵的聘礼(pku1062) 这道题目,我采用最短路径的Dijkstra算法,Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组, 第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将 加入到集合S中, 直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示), 按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中, 总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。 此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离, 是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。 但是直接用dijkstra肯定是不行的,如果对dijkstra做一些优化, 对每个目标节点做一次dijkstra的枚举就可以避免次优解的问题。 dijkstra算法的时候,指定一个目标节点,也就是说循环计算该图的dijkstra,每次都是from 0 to i节点。 这样就能在一开始的时候得到0节点 和 目标节点能允许的等级范围。 对dijkstra进行一些优化,比如当计算到目标节点已知的时候就可以结束了。 要对题目理解透,级别差超过m的两个人是不能以任何方式接触的,不单指相邻的两个人。

文档评论(0)

1亿VIP精品文档

相关文档