昂贵的聘礼 poj-1062

    题目大意:原文链接?不是英文题,自己看

    注释:$1\le N \le 100$。

      想法:开始的想法有些过于简单,因为落下了一个条件:就是等级限制是一条路径上的任意两点而不是相邻两点。所以我们考虑枚举当前可接受等级的区间。显然最多只有100个,然后我们用Dijkstra或者spfa求单源最短路即可。

        下面我们思考如何建图:

      其中,low[i][j]表示j物品可以使得i物品降价为low[i][j],val[i]表示单独购买 i 物品所需要的金币数。

      然后我们通过离散化使得所有的等级在一个递增的序列中,使得移动区间窗口使得酋长从窗口的最左端爬到最右端即可。

    代码就不贴了,太丑了。

    小结:这题的建图网上好像就我一个是这么建的,算了,怎么样都好吧。

      错误:链式前向星中to[j]表示的是节点。在使用链式前向星中的边权数组的时候直接使用value[j]即可,而不是value[to[j]]。  

        Dijkstra中的源点被标记为选取是在循环里被标记,而不是手动标记,切记切记。