题意:有n个物品,任务是得到1号物品,现在每个物品有它的主人,你可以用金钱购买物品,当然也可以用其他物品加上优惠的价格换取,但是有个要求,因为每个物品的主人有各自的等级,你所交易过的人中,等级差不能超过一个给定的值,问得到1号物品最少要花费多少钱。

其实就是最短路,从0到各物品的花费是物品的直接购买价格,然后可以通过一个物品换得其他物品,那就可以建边,权为优惠价格。然后由于有等级限制,所以可以枚举最低等级,然后最短路的计算中只考虑等级在最低等级到其对应的等级上限之间的点,然后取最小值作为答案就行。坑爹的是酋长竟然不一定是等级最高的……难道等级最高的是老王?

 #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
typedef pair<int,int> pii; struct cmp{
bool operator ()(pii a,pii b){
return a.first>b.first;
}
}; int head[],point[],val[],next[],size;
int n,x,l[],dist[]; void add(int a,int b,int v){
int i;
for(i=head[a];~i;i=next[i]){
if(point[i]==b){
if(val[i]>v)val[i]=v;
return;
}
}
point[size]=b;
val[size]=v;
next[size]=head[a];
head[a]=size++;
} int dij(int s,int t){
int i;
memset(dist,0x3f,sizeof(dist));
dist[]=;
priority_queue<pii,vector<pii>,cmp>q;
q.push(make_pair(dist[],));
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.first>dist[u.second])continue;
for(i=head[u.second];~i;i=next[i]){
int j=point[i];
if(l[j]>=l[s]&&l[j]<=l[s]+x&&dist[j]>u.first+val[i]){
dist[j]=u.first+val[i];
q.push(make_pair(dist[j],j));
}
}
}
return dist[t];
} int main(){
while(scanf("%d%d",&x,&n)!=EOF){
int i,j;
memset(head,-,sizeof(head));
size=;
for(i=;i<=n;i++){
int num,b,v;
scanf("%d%d%d",&v,&l[i],&num);
add(,i,v);
for(j=;j<=num;j++){
scanf("%d%d",&b,&v);
add(b,i,v);
}
}
int ans=0x3f3f3f3f;
for(i=;i<=n;i++){
int tmp=dij(i,);
if(ans>tmp)ans=tmp;
}
printf("%d\n",ans);
}
return ;
}

poj1062 最短路的更多相关文章

  1. [poj1062][最短路]昂贵的聘礼

    (最近总是有想让我的小博客更加充实的冲动,遇见一个不平常的题就想写下来.今天这个题姑且算是同学推荐的好题,很有意思,志之) 题目 题面 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了, ...

  2. [poj1062]昂贵的聘礼_最短路_离散化

    昂贵的聘礼 poj-1062 题目大意:原文链接?不是英文题,自己看 注释:$1\le N \le 100$. 想法:开始的想法有些过于简单,因为落下了一个条件:就是等级限制是一条路径上的任意两点而不 ...

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

    POJ-1062 昂贵的聘礼:http://poj.org/problem?id=1062 题意: 有一个人要到1号点花费最少的钱,他可以花费一号点对应的价格,也可以先买下其他一些点,使得费用降低. ...

  4. POJ1062昂贵的聘礼[最短路建模]

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45892   Accepted: 13614 Descripti ...

  5. ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)

    //转移为最短路问题,枚举必经每一个不小于酋长等级的人的最短路 //Time:16Ms Memory:208K #include<iostream> #include<cstring ...

  6. poj1062昂贵的聘礼(枚举+最短路)

    题意:就是一个点能够被另一个点取代,通过花费一定的金币,注意就是你和某个人交易了,如果这个人的等级和酋长的等级差的绝对值超过m,酋长就不会和你交易了: 思路:这里要注意到,我们最终的目的是找到一条最短 ...

  7. 枚举+最短路 poj1062

    这里有个非常坑的地方,还有比酋长地位还更高的人,我也是看了论坛才知道... 在这里我把编号1看成终点,优惠价格看成相应的替代品编号到可替代品编号的权值,比如说有了2再加8000就到了1,那么2到1的弧 ...

  8. POJ-1062 昂贵的聘礼 有限制的最短路

    题目链接:https://cn.vjudge.net/problem/POJ-1062 题意 虽然是中文题,还是简单复述一下吧 我们想要酋长的女儿作为老婆.作为交换,酋长想要点钱. 酋长提出可以用其他 ...

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

    题目链接:http://poj.org/problem?id=1062 Description 年轻的探险家来到了一个印 第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...

随机推荐

  1. Android 时间戳的转换

    在Android应用中,经常会碰到后台的时间是时间戳而现实的需要今天什么时候,昨天什么时候,就像微博的时间显示一样.现在我上一个把时间戳转换的代码: public static String getT ...

  2. android shape详解

    shape--> shape属性: rectangle: 矩形,默认的形状,可以画出直角矩形.圆角矩形.弧形等 solid: 设置形状填充的颜色,只有android:color一个属性 andr ...

  3. Sketchup+ArcGIS三维建模与管理

    一.软件安装及其说明 1.需要安装的软件及其安装: 这份报告主要涉及到的有三个需要安装的软件ArcGIS9.3(或9.2) .Sketchup6.0和SketchUp6 ESRI 插件. ArcGIS ...

  4. Ubuntu 13.04设置root用户

    1 .设置root用户密码:passwd root 输入密码 2 .编辑lightdm.conf gedit /etc/lightdm/lightdm.conf 最后加: greeter-show-m ...

  5. Apache虚拟目录(二)

    一.PHP生命周期 二.轻量级的PHP 轻量级PHP产品由lighttpd,nginx等等 Apache是基于模块化设计的 了解Apache源代码可以从main.c开始 操作系统上跑了APR运行库 m ...

  6. FZU1683 矩阵

    //Accepted 220 KB 359 ms #include <cstdio> #include <cstring> ; int pp; struct matrix { ...

  7. 创建一个Windows窗体

    20140702加: WS_OVERLAPPEDWINDOW这个属性如果写成WS_OVERLAPPED,则窗口没有最大最小按钮以及左边的系统的菜单. vs2010下的代码提示快捷键:CTRL + J ...

  8. Oracle数据库的引导过程

    Oracle在启动数据库:会先去读1号数据文件的文件头中记录的root dba, 再通过root dba去找bootstrap$中存储的那些数据字典的基表的定义,最后根据这些定义创建数字字典,即所谓的 ...

  9. 作业3-个人项目<词频统计>

    上了一天的课,现在终于可以静下来更新我的博客了.       越来越发现,写博客是一种享受.来看看这次小林老师的“作战任务”.                词频统计 单词: 包含有4个或4个以上的字 ...

  10. Asp.Net请求管道中的19个事件

    请求管道中的19个事件.(1)BeginRequest: 开始处理请求(2)AuthenticateRequest授权验证请求,获取用户授权信息(3):PostAuthenticateRequest获 ...