(最短路 dijkstra)昂贵的聘礼 -- poj -- 1062
链接:
http://poj.org/problem?id=1062
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 41359 | Accepted: 12076 |
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
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的更多相关文章
- 昂贵的聘礼 POJ - 1062(最短路)
年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:" ...
- 昂贵的聘礼 - poj 1062 (Dijkstra+枚举)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 39976 Accepted: 11596 Description 年 ...
- 昂贵的聘礼 POJ - 1062
题目链接:https://vjudge.net/problem/POJ-1062 如图,我们可以把交换的情况,抽象为一个有向图, 先抛去等级限制,那么就是一个最短路,从①出发,到达其他点的最短路中 最 ...
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- poj 1062 昂贵的聘礼 (dijkstra最短路)
题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼(带限制条件的dijkstra)
题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ 1062 昂贵的聘礼 (最短路)
昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...
随机推荐
- (转载)session token机制
http://blog.chinaunix.net/uid-26642709-id-3061264.html 使用session token时,必须用struts2表标签库,不能用html 通过ses ...
- PowerDesigner表生成 EXCEL
今天收到一个需求,要把数据库设计给一个excel版本的,百度出来一个脚本文件,很好用发现,留个纪念 在pd中,shift+ctrl+X,打开脚本运行,脚本如下,附件也留了一份: '********** ...
- hibernate中1对1的注解配置
hibernate中1对1的注解配置分为:外键关联映射和主键关联映射 1.外键配置 //一方@Entity@Table(name="test_classinfo")public c ...
- select语法图
- 执行js,通过js显示隐藏的输入框,或者给input赋值
在测试过程中,有些输入框是隐藏的,如果直接对他进行赋值,会找不到这个输入框,从而导致脚本运行失败. 例如下面的这个密码输入框: 登录密码输入框分为两个input,下面的是提示的,上面的才是真正存下来的 ...
- tf.unstack\tf.unstack
tf.unstack 原型: unstack( value, num=None, axis=0, name='unstack' ) 官方解释:https://tensorflow.google.cn/ ...
- SJY摆棋子&&[Violet 3]天使玩偶
SJY摆棋子 https://www.lydsy.com/JudgeOnline/problem.php?id=2648 [Violet 3]天使玩偶 https://www.lydsy.com/Ju ...
- Inside Triangle
Inside Triangle https://hihocoder.com/contest/hiho225/problem/1 时间限制:10000ms 单点时限:1000ms 内存限制:256MB ...
- 阅读笔记-A Message To Garcia
A Message To Garcia 主动性:世界会给你以厚报,既有金钱也有荣誉,只要你具备这样一种品质,那就是主动.就是不用别人告诉你,你就能出色的完成工作. 人类社会的最基本的行为法则----互 ...
- VINS-mono详细解读
VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...