昂贵的聘礼,(最短路的应用),Poj(1063)
题目链接:http://poj.org/problem?id=1062
很好的一道中文题。
思路:
把每种替换当做一条边,权重为交易优惠,就是求原点0到物品1的最短路。
这里有限制条件,每个节点还有等级,一条路中任意两个点之间的等级小于li.这里,我只要枚举每个点,以它为标准,删掉那些等级差大于li的点,再进行dijkstra就行了。
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define NUM 1005
#define maxint (1<<29) using namespace std; int li,n;
int c[NUM][NUM];
int dist[NUM];
int pre[NUM];
int vis[NUM];
int x[NUM];
int lv[NUM]; void dijkstra()
{
for(int i=;i<=n;i++)
dist[i] = c[][i];
for(int i=;i<=n;i++)
{
int u = ;
int minl = maxint;
for(int j=;j<=n;j++)
{
if(minl>dist[j]&&!vis[j])
{
u = j;
minl = dist[j];
}
} if(u == )
break; vis[u] = true; for(int j=;j<=n;j++)
{
if(!vis[j]&&c[u][j]>&&dist[j]>dist[u]+c[u][j])
dist[j] = dist[u]+c[u][j];
}
} }
int main()
{
memset(c,,sizeof(c));
memset(lv,,sizeof(lv));
memset(dist,maxint,sizeof(dist));
memset(vis,false,sizeof(vis)); scanf("%d%d",&li,&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&c[][i],&lv[i],&x[i]);
for(int j=;j<=x[i];j++)
{
int t,u;
scanf("%d%d",&t,&u);
c[t][i] = u; ///替代品到物品i
}
} int tmp;
int minprice = maxint;
for(int i=;i<=n;i++)
{
int maxlv = lv[i];
for(int j=;j<=n;j++)
{
if(lv[j]>maxlv||maxlv-lv[j]>li)
vis[j] = true;
else vis[j] = false;
} dijkstra();
tmp = dist[]; if(tmp<minprice)
minprice = tmp;
}
printf("%d\n",minprice); return ;
}
昂贵的聘礼,(最短路的应用),Poj(1063)的更多相关文章
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...
- POJ1062昂贵的聘礼[最短路建模]
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45892 Accepted: 13614 Descripti ...
- POJ 1062 昂贵的聘礼 最短路+超级源点
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- POJ 1062 昂贵的聘礼 最短路 难度:0
http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...
- poj 1062 昂贵的聘礼 最短路 dijkstra
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #incl ...
- POJ-1062 昂贵的聘礼( 最短路 )
题目链接:http://poj.org/problem?id=1062 Description 年轻的探险家来到了一个印 第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...
- ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)
//转移为最短路问题,枚举必经每一个不小于酋长等级的人的最短路 //Time:16Ms Memory:208K #include<iostream> #include<cstring ...
- M - 昂贵的聘礼 最短路 dij
http://poj.org/problem?id=1062 这个题目有一点点特别,因为数据很小也可以用Floyd跑,但是个人比较钟爱dij. 这个dij是怎么走的呢,首先就是普通的建图,然后就是带上 ...
- POJ1062 昂贵的聘礼(最短路)
题目链接. 分析: 一开始以为简单的DFS,直接做,MLE了. 本体应该用最短路径(Dijkstra算法)做. 此题的关键在于等级限制的处理,采用枚举,即假设酋长等级为5,等级限制为2,那么需要枚举等 ...
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
随机推荐
- MB Star C5 Functions
The MB STAR C5 notion and brand combination for hardware and software program components will be the ...
- python发送微信
申请企业微信 使用python发送信息到企业微信,同时支持python2与python3环境,需要先申请一个企业微信,然后创建应用,获取以下三个信息 企业IP.Agentid.Secret 网信为创建 ...
- 1.1 Go安装与项目结构初始化
软件安装安装包下载地址为:https://golang.org/dl/ 如果打不开可以: https://golang.google.cn/dl/ https://dl.google.com/go/g ...
- sf01_什么是数据结构
数据结构解决什么问题 如何在计算机中存储数据和信息,采用什么样的方法和技巧加工处理这些数据,都是数据结构需要努力解决的问题. 解决问题的步骤 使用计算机解决问题的步骤:分析具体问题得到数学模型,设计解 ...
- SpringMVC---彻底解决/和/*的问题!到底该用哪一个?
出处: https://blog.csdn.net/sinat_33921105/article/details/81951156 在web开发中我们经常会遇到/和/*的问题,有的时候稍不注意就容易忘 ...
- set学习(系统的学习)
set是STL中一种标准关联容器.它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高.set,顾名思义是“集合”的意思,在set中 ...
- (转)shell脚本输出带颜色字体
shell脚本输出带颜色字体 原文:http://blog.csdn.net/andylauren/article/details/60873400 输出特效格式控制:\033[0m 关闭所有属性 ...
- how to use Eclipse with Maven
install Eclipse LUNA; download and unzip Maven; Eclipse=>window=>preference=>maven=>inst ...
- HDU 4635 —— Strongly connected——————【 强连通、最多加多少边仍不强连通】
Strongly connected Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- 【转】js弹出框、对话框、提示框、弹窗总结
js弹出框.对话框.提示框.弹窗总结 一.js的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹 ...