POJ 1062 昂贵的聘礼(最短路中等题)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 51879 | Accepted: 15584 |
Description
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多少金币才能娶到酋长的女儿。
Input
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 思路:
一开始的思路是以酋长为起点,直接求他到每个符合要求的点的最长的路径,然后遍历一遍所有点,找出优惠最大的就好了,后面发现实际写的时候很麻烦,处理起来有点麻烦。
实际这道题因为不管怎么换最后都要和酋长换,所以应该以酋长为终点,然后直接枚举所有符合题目要求的点到酋长的最短路径然后找出这些路径里面最小的就行了。 实现代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define M 200
int price[M],rank[M],n,g[M][M],cnt,dist[M],vis[M],u,m,id,num;
void init(){
memset(price,,sizeof(price));memset(rank,,sizeof(rank));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
g[i][j] = INF;
}
void dij(){
for(int i=;i<=n;i++)
dist[i] = price[i];
int n1 = n;
while(n1--){
int minn = INF;
for(int i=;i<=n;i++)
if(dist[i]<minn&&!vis[i])
dist[u=i];
vis[u] = ;
for(int i=;i<=n;i++){
if(!vis[i]&&dist[i]>dist[u]+g[u][i])
dist[i] = dist[u] + g[u][i];
}
}
}
int main(){
while(scanf("%d%d",&cnt,&n)!=EOF){
init();
for(int i=;i<=n;i++){
scanf("%d%d%d",&price[i],&rank[i],&m);
for(int j=;j<=m;j++){
scanf("%d%d",&id,&num);
g[id][i] = num;
}
}
int ans = INF;
for(int i=;i<=n;i++){
int max_rank = rank[i];
for(int j=;j<=n;j++){
if(rank[j]<max_rank||rank[j]-max_rank>cnt)
vis[j] = ;
else vis[j]=;
}
dij();
ans = min(ans,dist[]);
}
cout<<ans<<endl;
}
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 年轻的探险家来到了一个印第安部落里.在那里 ...
随机推荐
- c# HttpWebRequest Cookie 设置到 webBrowser 控件
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...
- go语言之行--接口(interface)、反射(reflect)详解
一.interface简介 interface(接口)是golang最重要的特性之一,Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. 简单的说: ...
- Exp6 20155218 信息搜集与漏洞扫描
Exp6 信息搜集与漏洞扫描 1.DNS IP注册信息的查询 1.进行whois查询时,要去掉www,ftp等前缀,否则可能在whois服务器中查询不到: 2.使用whois查询ip的地理位置: 2. ...
- 汇编 MOV -2
知识点: MOV指令 基址 内联汇编 把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...
- Caffe学习系列——工具篇:神经网络模型结构可视化
Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py ...
- C# DataGridView控件禁止拷贝数据
代码如下(没错,就一行): dataGridView1.ClipboardCopyMode=DataGridViewClipboardCopyMode.Disable; 当然其它方式很多,但是不如来个 ...
- Partition4:增加分区
在关系型 DB中,分区表经常使用DateKey(int 数据类型)作为Partition Column,每个月的数据填充到同一个Partition中,由于在Fore-End呈现的报表大多数是基于Mon ...
- 策略模式与SPI机制,到底有什么不同?
这里说的策略模式是一种设计模式,经常用于有多种分支情况的程序设计中.例如我们去掉水果皮,一般来说对于不同的水果,会有不同的拨皮方式.此时用程序语言来表示是这样的: if(type == apple){ ...
- Gulp:插件编写入门
之前挖了个坑,准备写篇gulp插件编写入门的科普文,之后迟迟没有动笔,因为不知道该肿么讲清楚Stream这货,毕竟,gulp插件的实现不像grunt插件的实现那么直观. 好吧,于是决定单刀直入了.文中 ...
- 微信小程序中跳转另一个小程序
wx.navigateToMiniProgram({ appId: 'xxxxxxxxxxxxxxxxxx', // 要跳转的小程序的appid path: 'page/index/index', / ...