Pku acm 1062 昂贵的聘礼 数据结构题目解题报告(七)—单源最短路径:Dijkstra算法

来源:互联网 发布:天行VPN软件下载 编辑:程序博客网 时间:2024/06/11 20:09
题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1062
基本思想:
增加一个起点S, 若某物品Ai的价格为Pi, 添一条权值为Pi的边S-->Ai
若物品Aj可以用Ai加优惠价Qi换得,加权值为Qi的边Aj-->Ai,对于题目中提到的等级限制也是该题的一个难点,假如酋长的rank=10,等级限制M=5,那么可以参与交易的等级有以下6种可能:5-10 6-11 7-12 8-13 9-14 10-15
用一个循环就是分别处理这M+1种可能即可。假如正在处理8-13的循环,就遍历每一个物品的主人,如果其rank不在8-13中就将该主人的所有交换都设为无穷大,循环每一个可能求出S到A1的单源最短路径,取所有循环的最小值即是要求的结果。最短路(dijkstra)的时间复杂度是O(n^2),枚举M+1次,总的时间复杂度是O(n^2*M).

带有详细注释的代码可以从http://download.csdn.net/user/china8848/获得。