年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格。探险家于是又跑到其他地方,其他人也提出了类似的要求,或者直接用金币换,或者找到其他东西就可以降低价格。不过探险家没必要用多样东西去换一样东西,因为不会得到更低的价格。探险家现在很需要你的帮忙,让他用最少的金币娶到自己的心上人。另外他要告诉你的是,在这个部落里,等级观念十分森严。地位差距超过一定限制的两个人之间不会进行任何形式的直接接触,包括交易。他是一个外来人,所以可以不受这些限制。但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样。因此你需要在考虑所有的情况以后给他提供一个最好的方案。
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多少金币才能娶到酋长的女儿。
Input
输入第一行是两个整数M,N(1 <= N <= 100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X < N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优惠价格"。
Output
输出最少需要的金币数。
Sample Input
1 4
10000 3 2
2 8000
3 5000
1000 2 1
4 200
3000 2 1
4 200
50 2 0
Sample Output
5250

c++代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define INF 0x3f3f3f3f
int map[110][110],vis[110],dist[110],l[110];
int n;
void init()
{int i,j;for(i=0;i<=n;i++)for(j=0;j<=n;j++)if(i==j)map[i][j]=0;else map[i][j]=INF;
}int dijkstra(int low,int high)
{int i,j,next,min;memset(vis,0,sizeof(vis));for(i=0;i<=n;i++){if(l[i]>=low&&l[i]<=high)dist[i]=map[0][i];}vis[0]=1;for(i=1;i<=n;i++){min=INF;for(j=0;j<=n;j++){if(l[j]>=low&&l[j]<=high){if(!vis[j]&&dist[j]<min){min=dist[j];next=j;}}}vis[next]=1;for(j=0;j<=n;j++){if(l[j]>=low&&l[j]<=high){if(!vis[j]&&dist[j]>dist[next]+map[next][j]){dist[j]=dist[next]+map[next][j];}}} }return dist[1];
}
int main()
{int m,i,j,a,v,x,need;while(scanf("%d%d",&m,&n)!=EOF){init();for(i=1;i<=n;i++){scanf("%d%d%d",&map[0][i],&l[i],&x);while(x--){scanf("%d%d",&a,&v);map[a][i]=v;}}need=INF;for(i=l[1]-m;i<=l[1];i++){need=min(need,dijkstra(i,i+m));}printf("%d\n",need);}return 0;
}

D - 昂贵的聘礼(最短路径)相关推荐

  1. POJ1062 昂贵的聘礼(最短路径)

    题意: 中文题 要点: 等级比较难处理,注意题目中是间接接触也不行,所以假如酋长等级是5,差距为2,可以交换的等级有(3,4,5),(4,5,6),(5,6,7),也即是区间长度是m,交换中最大的与最 ...

  2. POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】

    <题目链接>                   昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...

  3. POJ 1062 昂贵的聘礼【经典的最短路问题】

    原题链接:http://poj.org/problem?id=1062 我的链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=19651 ...

  4. 903. 昂贵的聘礼题解(建图挺有趣的)

    昂贵的聘礼原题 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用 10000 个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求 ...

  5. 解题报告:POJ - 1062 昂贵的聘礼(最短路、超级源点)

    整理的算法模板合集: ACM模板 AcWing 903. 昂贵的聘礼 [思路] 由于本题只有终点,没有起点,所以我们建一个超级源点S=0S = 0S=0 ,源点与各各点的权值就是他们的价格 如下图所示 ...

  6. POJ 1062 昂贵的聘礼

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30252   Accepted: 8465 Descriptio ...

  7. 昂贵的聘礼 poj 1062 dijsk

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46539   Accepted: 13819 Descripti ...

  8. 【题解】昂贵的聘礼 POJ - 1062 (最短路 经典)⭐⭐⭐⭐

    昂贵的聘礼 POJ - 1062 你想娶酋长的女儿,但酋长要求你给一定数额金钱的聘礼.除了金钱外,酋长也允许你用部落里其他人的某物品加上一点钱作为聘礼.而其他人的物品也可以通过指定的另外一些人的某物品 ...

  9. POJ 1062 昂贵的聘礼 (dijkstra)

    昂贵的聘礼 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说 ...

  10. 昂贵的聘礼「最短路」「思维」

    昂贵的聘礼 题目描述: n个物品,每个物品都有一个价值,且每个物品x都有一个替代队列,这个替代队列中,每个替代品y都有一个优惠价格c,你可以使用一个替代品y + 该替代品的优惠价格c换的所需物品x 每 ...

最新文章

  1. linux中文件描述符fd和文件指针flip的理解
  2. layer的一种用法,页面多选时用地址传递值过多时,用弹出层画一个form表单,然后通过提交表单传值
  3. ❗HTML引入JavaScript的三种常用方式汇总❗
  4. Docker——基于HubServing部署全套PaddleOCR Restful API服务(CPU版本)
  5. react+ant design Breadcrumb面包屑组件
  6. 13点建议顺利通过JAVA面试【转载】
  7. [LeetCode][JavaScript]Roman to Integer
  8. 前端学习(1677):前端系列实战课程之游戏初始化
  9. 怎样让计算机快速开机,怎样设置可以让电脑快速启动开机.doc
  10. 坚果Pro 3发布,罗永浩大赞科大讯飞:不成器国产厂商尽早跟讯飞合作
  11. 关于机器人方面的sci论文_如何给论文润色?从这两个方面入手
  12. 移动健康应用观察:快速问医生的“Web 10年功”
  13. mysql考试_mysql考试总结
  14. 一个屌丝程序猿的人生(八十九)
  15. 如何在linux下观看需vodplayer播放的电影
  16. 善领dsa2020最新车机ce版_理想汽车回应碰撞事故 硬件升级计划将推出OTA 2.0版
  17. 最全办公室租赁技巧,让你找到心仪的办公室
  18. matlab三极管名称,三极管常用型号大全(收藏)
  19. 【powerBI_001】DAX函数之RELATED和RELATEDTABLE用法
  20. 云计算与大数据概论(二)

热门文章

  1. java 快速排序流程图_java简单快速排序实例解析
  2. Hadoop Snappy安装终极教程
  3. hadoop1.2.1伪分布式搭建
  4. 红帽企业版Linux 6安装指南(中文)
  5. 0538-实战将lnmp服务中的上传目录独立分离到nfs服务器
  6. Linux stat
  7. 翻译Programming WCF Services第二版
  8. synchronized几种常见用法
  9. 爱奇艺开播助手Flutter跨平台Hybrid实践\n
  10. MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。...