POJ 1062 昂贵的聘礼(最短路)题解
题意:中文题意不解释...
思路:交换物品使得费用最小,很明显的最短路,边的权值就是优惠的价格,可以直接用Dijkstra解决。但是题目中要求最短路路径中任意两个等级不能超过m,我们不能在连最短路的时候直接判断,但是我们可以通过预处理+遍历解决。因为一条路径肯定有一个最小level的人,我们假设他为x,那么我们假设x从1一直枚举到n,然后判断哪些点可以在这条路径中,然后把这些点拿去跑最短路,这样一次次遍历得到最短路,然后得到最短路中的最小值就是最终的最小花费。
- #include<cstdio>
- #include<set>
- #include<cmath>
- #include<stack>
- #include<cstring>
- #include<algorithm>
- #define ll long long
- using namespace std;
- const int maxn = +;
- const int INF = 0x3f3f3f3f;
- int mp[maxn][maxn];
- int dis[maxn];
- int vis[maxn];
- int pr[maxn];
- int level[maxn];
- bool ok[maxn];
- int n,m;
- int dijkstra(){
- memset(vis,,sizeof(vis));
- for(int i = ;i <= n;i++) dis[i] = pr[i];
- //dis[st] = 0;
- for(int i = ;i <= n;i++){
- int Min = INF,k = ;
- for(int j = ;j <= n;j++){
- if(!vis[j] && ok[j] && dis[j] < Min){
- Min = dis[j];
- k = j;
- }
- }
- vis[k] = ;
- for(int j = ;j <= n;j++){
- if(dis[j] > dis[k] + mp[k][j] && ok[j]){
- dis[j] = dis[k] + mp[k][j];
- }
- }
- }
- return dis[];
- }
- int main(){
- while(scanf("%d%d",&m,&n) != EOF){
- memset(mp,INF,sizeof(mp));
- for(int i = ;i <= n;i++){
- int x;
- scanf("%d%d%d",&pr[i],&level[i],&x);
- while(x--){
- int t,v;
- scanf("%d%d",&t,&v);
- mp[t][i] = v;
- }
- }
- int ans = INF;
- for(int i = ;i <= n;i++){ //枚举假设i是当前路径最小的level
- for(int j = ;j <= n;j++){
- if(level[j] < level[i] || level[j] - level[i] > m)
- ok[j] = false;
- else ok[j] = true;
- }
- int ret = dijkstra();
- ans = min(ret,ans);
- }
- printf("%d\n",ans);
- }
- return ;
- }
POJ 1062 昂贵的聘礼(最短路)题解的更多相关文章
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...
- POJ 1062 昂贵的聘礼 最短路 难度:0
http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...
- POJ 1062 昂贵的聘礼 最短路+超级源点
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- poj 1062 昂贵的聘礼 最短路 dijkstra
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #incl ...
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- POJ 1062 昂贵的聘礼(图论,最短路径)
POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...
- poj 1062 昂贵的聘礼 (dijkstra最短路)
题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼 (最短路)
昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...
- poj 1062 昂贵的聘礼 (有限制的最短路)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56594 Accepted: 17083 Descripti ...
随机推荐
- 小游戏——js+h5[canvas]+cs3制作【五子棋】小游戏
五子棋小游戏学习—— 有一个问题是,棋盘线的颜色,在canvas中,明明设置了灰色,但在我的预览中还是黑色的,很重的颜色. 以下是复刻的源码: <!DOCTYPE html> <ht ...
- 腾讯云CMQ消息队列测试
版权声明:本文由王冲原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/128 来源:腾云阁 https://www.qclou ...
- 腾讯云CMQ消息队列在Linux环境下的使用
版权声明:本文由李少华原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/76 来源:腾云阁 https://www.qclou ...
- Excel打开csv文件乱码问题的解决办法
excel打开csv 出现乱码怎么解决 https://jingyan.baidu.com/article/ac6a9a5e4c681b2b653eacf1.html CSV是逗号分隔值的英文缩写,通 ...
- Oracle入门笔记 ——启动进阶
1.2 进阶内容: 两个概念:SCN 和 检查点 1.SCN的定义: system change member ,系统改变号,是数据库中非常重要的一个数据结构. SCN 用以标示数据 ...
- 查看Oracle的redo日志切换频率
1.Oracle log 每次切换会记录到告警日志中 设想写个方案来查看log切换频率来判断Oracle log是否应该更改大小. 2.sql a.查看redo日志信息 select * from v ...
- windows dos 常用命令行
有关某个命令的详细信息,请键入 HELP 命令名 dir (directory) :列出当前目录下的文件以及文件夹 md (make directory): 创建目录 rd (remove direc ...
- 02Del.ashx(删除班级)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebHelper ...
- Visual Studio的“Waiting for a required operation to complete...”问题
自从使用Visual Studio 2013之后,多次遇到这个恼人的“Waiting for a required operation to complete...”问题. 问题发生于在Visual ...
- 模反元素 RSA Euler's totient function
https://baike.baidu.com/item/模反元素/20417595 如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1.这时,b就 ...