poj 1062 Dijkstrul算法
来源:互联网 发布:日本通软件下载 编辑:程序博客网 时间:2024/04/29 09:10
题目链接:http://poj.org/problem?id=1062
题目大意:一个探险家为了要娶酋长的女儿,必须用一定的金钱和某种物品去换,而物品的拥有者也要用一定的金钱和另外的物品来换取,换取条件是交换者之间的等级不能直接或间接的大于某个数,现在要求探险家娶到酋长女儿能够用到的最小的金钱数
思路:若两种物品间可以用某种转换关系,则用有向边连接,边的权值即为交换的费用,然后在给定的等级交换范围内,求所需的最小金钱
注意:每个物品为一个节点。酋长所要物品为源节点。求源节点到其它节点的最短路径。结果是到所有节点最短路径加上物品价值和的最小值。说几点需要注意的问题:
1、等级的处理:题中规定等级超过m的物品不可以交换,包括间接交换。比如a、b、c等级为1、2、3,如果等级限制为1的话,不可以通过a换b,b再换c这种方式,因为a与c的等级超过1。所以如果单次dijkstra求最短路径时,我们很难确定是否加入非集合S的的节点,因为不清楚当前节点是否满足等级要求,或者是否对未来要加入节点等级造成影响。所以目前采用的是枚举范围的方法,有一个事情我们是确定的,即初始节点的等级一定是在等级范围里的。所以我们枚举(lev[s]-m, lev[s])到(lev[s],lev[s]+m)等级范围。在处理最短路径新加入节点时要求节点等级大于等于最低等级,小于等于最高等级。
2、有向图问题:A物品可以用B物品和C个金币代替,表示A到B的边权为C,但是并不说明B到A也有一条权为C的边,注意!
3、初始化问题:既然要多次运行dijkstra,那么最小路径长度一定要初始化。我前几次WA就是错在这里,因为每次dijstra数据具有相似性,所以好多数据都检查不出来。
- poj 1062 Dijkstrul算法
- poj-1062 dijkstra算法
- POJ 1062 昂贵的聘礼 Dijkstra算法
- POJ 二分算法
- POJ 3565 KM算法
- poj 1125 floyed算法
- POJ 1089 贪心算法
- POJ 3258 二分算法
- poj 2553 tarjan算法
- poj 2186 tarjan算法
- poj 1258 prim算法
- poj 1860 spfa算法
- poj 1125 floyd算法
- poj 3041 匈牙利算法
- poj 3020 匈牙利算法
- poj 1251 Prim算法
- 【随机算法】poj 3318
- poj 1017 贪心算法
- 八个最好的轻量级Linux发行版ZT
- 光涂鸦
- Trie树|字典树的简介及实现
- IT考证宝典之一:如何成为信息安全专才
- 如何配置DAVINCI内存
- poj 1062 Dijkstrul算法
- 初学jsp留言板问题集
- Win7: Fixing textext on Inkscape 0.48 解决Tek Text问题
- winform处理特殊按键的好方法
- zen cart产品分类及产品管理
- 编程应该掌握的算法
- 小悲剧
- 深度优先算法和广度优先算法
- MCU知识总结