(最短路 dijkstra)昂贵的聘礼 -- poj -- 1062

时间:2023-02-25 22:50:21

链接:

http://poj.org/problem?id=1062

昂贵的聘礼
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 41359   Accepted: 12076

Description

年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格。探险家于是又跑到其他地方,其他人也提出了类似的要求,或者直接用金币换,或者找到其他东西就可以降低价格。不过探险家没必要用多样东西去换一样东西,因为不会得到更低的价格。探险家现在很需要你的帮忙,让他用最少的金币娶到自己的心上人。另外他要告诉你的是,在这个部落里,等级观念十分森严。地位差距超过一定限制的两个人之间不会进行任何形式的直接接触,包括交易。他是一个外来人,所以可以不受这些限制。但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样。因此你需要在考虑所有的情况以后给他提供一个最好的方案。 
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多少金币才能娶到酋长的女儿。 

Input

输入第一行是两个整数M,N(1 <= N <= 100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X < N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优惠价格"。

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
dijkstra
#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
const int INF = (<<)-;
#define maxn 205
#define MAXN 150005
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b) int M, N;
int dist[maxn], G[maxn][maxn], lv[maxn];
bool vis[maxn]; int Dij()
{
int i, j, k, ans = G[][]; for(k=lv[]-M; k<=lv[]; k++)
{
memset(vis, false, sizeof(vis));
for(i=; i<=N; i++)
{
dist[i] = G[][i]; if(lv[i]<k || lv[i]>k+M)
vis[i] = true;
} for(i=; i<=N; i++)
{
int index, Min=INF;
for(j=; j<=N; j++)
{
if(!vis[j] && dist[j]<Min)
{
Min = dist[j];
index = j;
}
}
vis[index] = true; for(j=; j<=N; j++)
{
if(!vis[j] && dist[j] > G[index][j] + dist[index])
dist[j] = G[index][j] + dist[index];
}
} ans = min(ans, dist[]);
}
return ans;
} int main()
{
while(scanf("%d%d", &M, &N)!=EOF)
{
int i, j, X, T, V; for(i=; i<=N; i++)
for(j=; j<=i; j++)
G[i][j] = G[j][i] = INF;
G[i][j] = ; for(i=; i<=N; i++)
{
scanf("%d%d%d", &G[][i], &lv[i], &X);
while(X--)
{
scanf("%d%d", &T, &V);
G[T][i] = V;
}
} printf("%d\n", Dij());
}
return ;
}
#include<stdio.h>
#include<vector>
#include<stack>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std; const int maxn = ;
const int maxm = ;
const int oo = 0xfffffff; struct node
{
int u, v, price, next;
}e[maxn];
int head[maxm], lv[maxm], p[maxm];
bool use[maxm]; void Add(int u, int v, int c, int k)
{
e[k].u = u;
e[k].v = v;
e[k].price = c;
e[k].next = head[u];
head[u] = k;
} int Dfs(int MaxLv, int MinLv, int k, int M)
{
int MinP = oo; for(int i=head[k]; i!=; i=e[i].next)
{
int v = e[i].v;
int c = e[i].price; if(lv[v] >= MinLv && lv[v] <= MaxLv && use[v] == false)
{
use[v] = true; int L = min(MaxLv, lv[v]+M);
int R = max(MinLv, lv[v]-M); MinP = min(MinP, Dfs(L, R, v, M)+c); use[v] = false;
}
} return min(p[k], MinP);
} int main()
{
int N, M; while(scanf("%d%d", &M, &N) != EOF)
{
int i, k=, v, price, T; memset(head, , sizeof(head)); for(i=; i<=N; i++)
{
scanf("%d%d%d", &p[i], &lv[i], &T); while(T--)
{
scanf("%d%d", &v, &price);
Add(i, v, price, k++);
}
} use[] = true;
int ans = Dfs(lv[]+M, lv[]-M, , M); printf("%d\n", ans);
} return ;
}

(最短路 dijkstra)昂贵的聘礼 -- poj -- 1062的更多相关文章

  1. 昂贵的聘礼 POJ - 1062(最短路)

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

  2. 昂贵的聘礼 - poj 1062 &lpar;Dijkstra&plus;枚举&rpar;

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39976   Accepted: 11596 Description 年 ...

  3. 昂贵的聘礼 POJ - 1062

    题目链接:https://vjudge.net/problem/POJ-1062 如图,我们可以把交换的情况,抽象为一个有向图, 先抛去等级限制,那么就是一个最短路,从①出发,到达其他点的最短路中 最 ...

  4. 最短路&lpar;Dijkstra&rpar; POJ 1062 昂贵的聘礼

    题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...

  5. poj 1062 昂贵的聘礼 (dijkstra最短路)

    题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  6. POJ - 1062 昂贵的聘礼&lpar;最短路Dijkstra&rpar;

    昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...

  7. 最短路POJ 1062 &Tab;昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  8. POJ 1062 昂贵的聘礼&lpar;带限制条件的dijkstra&rpar;

    题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submis ...

  9. POJ 1062 昂贵的聘礼 (最短路)

    昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...

随机推荐

  1. Javascript实用方法二

    承接上一篇, Object keys object的keys方法能够获取一个给定对象的所有键(key/属性名)并以数组的形式返回.这个方法可以用于键的筛选.匹配等. var basket = { st ...

  2. docker – 你应该知道的10件事

      容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...

  3. WEB前端--背景相关知识点总结

    一.背景(background) 它是单一属性 但是它衍生出很多的复合属性 background-color  背景色 background-image 背景图片 background-repeat ...

  4. 文件的压缩与解压XZip&comma;XUnzip

    参考http://www.codeproject.com/KB/cpp/xzipunzip.aspx CreateZip() –创建一个空的 zip 文件 HZIP CreateZip(void *z ...

  5. 用DELPHI的RTTI实现数据集的简单对象化

    在<强大的DELPHI RTTI--兼谈需要了解多种开发语言>一文中,我说了一下我用DELPHI的RTTI实现了数据集的简单对象化.本文将详细介绍一下我的实现方法.     首先从一个简单 ...

  6. python中int的功能简单介绍

    Int的功能介绍 1. 绝对值 x.__abs__()等同于abs(x) 2. 加法 x.__add__(y)等同于x+y 3. 与运算 x.__and__(y)等同于x&y 4. 布尔运算 ...

  7. Linux学习之CentOS&lpar;七&rpar;---常用基本操命令1

    cd   pwd  mkdir  rmdir  ls  cp  rm  mv  cat  tac  nl  more   less   head   tail   touch ①目录管理:ls.cd. ...

  8. Solr 03 - Solr的模式设计与优化 - 最详细的schema&period;xml模式文件解读

    目录 1 关于schema.xml文件 2 解读schema.xml文件 2.1 field - 配置域 2.2 fieldType - 配置域类型 2.3 copyField - 配置复制域 2.4 ...

  9. ASP&period;Net:Javascript 通过PageMethods 调用后端WebMethod方法 &plus; 多线程数据处理 示例

    ASP.Net:Javascript 通过PageMethods 调用后端WebMethod方法 + 多线程数据处理 示例 2012年04月27日 16:59:16 奋斗的小壁虎 阅读数:4500   ...

  10. Gerrit安装

    1.安装gerrit [sisi@pre-srv44 ~]$ su - gerrit2Password: [gerrit2@pre-srv44 ~]$ lltotal 83872-rw-r--r-- ...