题意:

中文题

要点:

等级比较难处理,注意题目中是间接接触也不行,所以假如酋长等级是5,差距为2,可以交换的等级有(3,4,5),(4,5,6),(5,6,7),也即是区间长度是m,交换中最大的与最小的差为m。所以枚举等级区间,所有可行的区间dijkstra一遍,求总的最小值。还要注意这题每个点最短路径求出后要加上当前点物品价值,最后求最小。

15386959 Seasonal 1062 Accepted 208K 0MS C++ 1297B 2016-04-13 16:28:25
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define INF 0x3f3f3f3f
#define min(a,b) a>b?b:a
int n, m;
int map[105][105],rate[105],dis[105],cost[105];
bool vis[105],limit[105];int dijkstra()
{memset(vis, true, sizeof(vis));memset(dis, INF, sizeof(dis));dis[1] = 0;int min, temp=1;for (int i = 1; i <= n; i++){min = INF;for (int j = 1; j <= n;j++)if (vis[j] && min > dis[j]&&limit[j])//注意要比较等级{temp = j;min = dis[j];}vis[temp] = false;for (int j = 1; j <= n; j++)if (vis[j] && dis[temp] + map[temp][j] < dis[j] && limit[j])dis[j] = dis[temp] + map[temp][j];}min = INF;for (int i = 1; i <= n; i++)//路径求出最小值还要加上当前物品价值{dis[i] += cost[i];if (min > dis[i])min = dis[i];}     return min;
}int main()
{int p, l, x,t,v;memset(map, INF, sizeof(map));scanf("%d%d", &m, &n);for (int i = 1; i <= n; i++){scanf("%d%d%d", &p, &l, &x);map[i][i] = 0;cost[i] = p;rate[i] = l;while (x--){scanf("%d%d", &t, &v);map[i][t] =v;}}int minx = INF;for (int i = 0; i <= m; i++)//注意不是比较相邻的等级,要与最大的那个比较,就是区间长度要是m{memset(limit, 0, sizeof(limit));for (int j = 1; j <= n; j++)if (rate[j] >= rate[1] - m + i && rate[j] <= rate[1] + i){limit[j] = 1;}minx = min(minx, dijkstra());}printf("%d\n", minx);return 0;
}

转载于:https://www.cnblogs.com/seasonal/p/10343781.html

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

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

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

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

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

  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个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说 ...

最新文章

  1. Linux 系统查看硬件配置信息
  2. Flask-Migrate拓展数据库表结构
  3. IOS pushViewController如何去隐藏tabbar
  4. HEVC/H265 HM10.0 分析(一)NALread.cpp
  5. python简体中文、繁体中文转换
  6. python第一单元测试,知到Python语言应用第一单元章节测试答案
  7. python数据结构-串
  8. 用perl操作excel的介绍
  9. 汇编语言的强制类型转换
  10. RecalcLayout的作用
  11. linux常用解压命令总结
  12. 关于微信和微信小程序
  13. 如何把空间数据从CGCS2000转换到WGS84和BD09 ——JAVA语言实现
  14. lumion实例渲染6.2
  15. Untitled-0720记录一次机器学习完整项目
  16. 微信小程序和uni-app面试高频知识点
  17. 第一章 前端开发——HTML5/CSS3
  18. 论微服务架构设计与应用
  19. 膨胀的计算机仿真,烧结水分迁移数学模型及计算机仿真
  20. 智能音箱技术原理之经典好文

热门文章

  1. Eloquent JavaScript 阅读笔记一
  2. Linux 下查看系统是32位还是64位的方法
  3. 2012年最佳免费网站和移动应用 PSD 界面素材揭晓
  4. 跨浏览器的元素的竖直排列
  5. 如何阻止分布式拒绝服务***
  6. AVR系列之TWI功能测试
  7. ubuntu drbd双机互备
  8. Tomcat启动log:SLF4J: Class path contains multiple SLF4J bindings.
  9. Freescale i.mx28 Boot-stream分析
  10. WinForm两点注意的地方