Question Link
题目分析
建立图模型,物品对应结点,兑换关系,以及优惠价格,对应终点,和边权,而你现在要做的就是找一条链路,就是多个兑换关系形成的一条路,这条路上所有的权值,再加上,最终兑换成的物品本身的价格,使得这个值最小。由于物品本身价格不变,那么可知,我们需要求得这条路权加和最小。对应dijkstra求最短路。
但是上述分析缺少一个限制,就是这条路上的所有点,他们的最大等级减去他们最小的等级,这个等级差,不能超过m,这个给定的值。我们要把这个m值变成,选取点的限制条件,这样我们就能利用dijkstra算法解题。所以我们枚举区间,明确这个区间长度为m,并且左闭右闭,枚举下限,由 lev[ 1 ] - m ,到lev[ 1 ]。
AC code
Dijkstra algorithm
#include
#include
#include
#include
#include
#include
Bellman-Ford algorithm
#include
#include
#include
#include
#include
#include
SPFA algorithm
#include
#include
#include
#include
#include
#include
dijkstra + priority
#include
#include
#include
#include
#include
#include