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数据具有相似性,所以好多数据都检查不出来。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁零5个月的宝宝不说话怎么办 两岁宝宝不拔掉老是拉在裤上怎么办 一岁的宝宝吞了一颗五子棋该怎么办 别人欠我钱还把我拉黑我该怎么办 欠我钱的人耍赖不还我该怎么办 交易猫买的炉石传说号被找回怎么办 淘宝上卖水果过季了不想下架怎么办 两岁宝宝被蚊子咬了挠破流水怎么办 我打了人一拳他就躺地下了怎么办 在微信上被认识的人骗了钱该怎么办 微信上面被不认识的人骗了钱怎么办 柜体和订做的柜门颜色对不上怎么办 拉鞭炮的车压了我的电车不陪怎么办 脚爱出汗穿高跟凉鞋总往前滑怎么办 视频的格式是VⅠD打开很慢怎么办 汕头普法学法我点了考试没考怎么办 德云的生活攻略第三天卡关了怎么办 我的世界房子被参观的人烧了怎么办 新买的手表返厂维修弄划伤了怎么办 糖猫手表丢了别人捡了换了卡怎么办 我妈总怀疑我爸偷她东西怎么办啊 在百度上买的演出票不配送了怎么办 北交大预报名信息填错了怎么办保研 我租了个店面房子但是写了拆怎么办 电话换了微信账号密码都忘了怎么办 宝宝被开水烫了的泡泡破皮了怎么办 脚上泡泡破了的留下的黑印子怎么办 我的车子被前夫霸占了不给我怎么办 自己和同学吵了一架生气了要怎么办 旅游 徐州 泰山 尼泊尔旅游 d\' \'0 0\' 1\' 1\'\' 3\' 11\'