思路:

最短路。枚举路径中节点的“等级”,合法才可以进行松弛操作。

实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <vector>
 4 #include <functional>
 5 #include <queue>
 6 using namespace std;
 7
 8 typedef pair<int, int> PP;
 9 const int MAXN = 105, INF = 0x3f3f3f3f;
10
11 int M, N, P[MAXN], L[MAXN], X, dist[MAXN];
12 struct edge
13 {
14     int to, cost;
15 };
16 vector<edge> G[MAXN];
17
18 int Dijkstra(int s, int l, int r)
19 {
20     fill(dist + 1, dist + N + 1, INF);
21     dist[s] = 0;
22     priority_queue<PP, vector<PP>, greater<PP> > q;
23     q.push(PP(0, s));
24     while (!q.empty())
25     {
26         PP tmp = q.top(); q.pop();
27         int id = tmp.second;
28         if (tmp.first > dist[id]) continue;
29         for (unsigned int i = 0; i < G[id].size(); i++)
30         {
31             edge & e = G[id][i];
32             if (dist[e.to] >= dist[id] + e.cost && L[e.to] >= l && L[e.to] <= r)
33             {
34                 dist[e.to] = dist[id] + e.cost;
35                 q.push(PP(dist[e.to], e.to));
36             }
37         }
38     }
39     int minn = INF;
40     for (int i = 1; i <= N; i++)
41         minn = min(minn, dist[i] + P[i]);
42     return minn;
43 }
44
45 int main()
46 {
47     cin >> M >> N;
48     for (int i = 1; i <= N; i++)
49     {
50         cin >> P[i] >> L[i] >> X;
51         int id, cost;
52         for (int j = 0; j < X; j++)
53         {
54             cin >> id >> cost;
55             G[i].push_back(edge{id, cost});
56         }
57     }
58     int l = L[1], ans = INF;
59     for (int i = max(l - M, 0); i <= l; i++)
60     {
61         int p = i, q = i + M;
62         ans = min(ans, Dijkstra(1, p, q));
63     }
64     cout << ans << endl;
65     return 0;
66 }

转载于:https://www.cnblogs.com/wangyiming/p/6993181.html

poj1062 昂贵的聘礼相关推荐

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

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

  2. poj1062昂贵的聘礼(Dijkstra**)

    1 /* 2 题意: 物主有一个物品,价值为P,地位为L, 以及一系列的替代品Ti和该替代品所对应的"优惠"Vi 3 g[u][i] 表示的是u物品被i物品替换后的优惠价格!(u& ...

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

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

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

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

  5. POJ 1062 昂贵的聘礼

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

  6. 昂贵的聘礼 poj 1062 dijsk

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

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

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

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

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

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

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

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

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

最新文章

  1. 和12岁小同志搞创客开发:设计一款亮度可调节灯
  2. 3、绘制E-R图:数据库概要设计阶段
  3. 5-4 是否同一棵二叉搜索树 (25分)
  4. AOP+自定义注解 实现service统一的异常信息处理
  5. 计算机网络DNS域名配置,如何设置计算机的IP地址和DNS域名服务器
  6. 安全狗服云手机端上架各大手机应有市场
  7. 【上采样问题】将浮点运算转换成整数运算
  8. python注释中文_python注释不能识别中文
  9. 计算电磁学MoM学习启动篇
  10. [教程] ESP32+TFT+分光棱镜实现透明小电视
  11. 为什么你还没有买新能源汽车? 1
  12. 安卓手机如何让你的微信减肥不卡顿
  13. 影视广告创意与制作(三)
  14. 核心单词Word List 48
  15. ECCV2020 超分辨论文(附论文链接)
  16. docker开机启动失败_docker安装后启动不了 解决方法
  17. CocosCreator屏幕适配小结
  18. 软件质量保证与测试大作业,软件测试大作业.docx
  19. 教程: nodejs 做微信公众号开发,回复 xml 消息
  20. linux ubuntu安装GPU

热门文章

  1. 7zip压缩zip格式时文件名支持中文的设置
  2. 全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
  3. LINUX SHELL脚本多行注释
  4. 工作日志模板_生产运行部操作日志“电子化”
  5. 手机电子词典_一个落榜生的醒悟:我的梦想,是手机夺走的!
  6. 旋转研究(矩阵,欧拉角,四元数)
  7. stl:sort(stl快速排序)
  8. 基于日志处理的ElasticSearch的学(gen)习(feng)
  9. CODEVS 3657 括号序列
  10. 几种影响软件可伸缩性的问题