POJ_1062_(dijkstra)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 48126 | Accepted: 14343 |
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
这题是好题啊!
题意:求得到酋长女儿的最小花费。帮助他得到别人的某件物品可以得到一个新的价格。另外的人也是如此,物品有原价,帮他得到
另一人的某物品,又可以得到一个新价格,以此类推。每个人有一个等价,相差M级的人之间不能直接或间接交易。 最开始用dfs写,因为没处理好等级的关系,没做出来,后来发现,这道题的图可以有很多边,以至于dfs跑不出来。然后用spfa做,
也没做出来,然后看了题解。 思路:该人可以为任意等级,那么枚举他的等级,并且规定他只与比他等级低并且满足等级差关系的人交易,然后用dijkstra跑。 做的时候没想到用最短路,感觉还是自己的建模能力不行,没有能够想到,继续练吧。 这题又复习了一下dijkstra这个经典算法。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 105
#define INF 999999999 int n,m; struct Edge
{
int v,val,next;
} edge[N*N];
int head[N],cnte; void addEdge(int a,int b,int val)
{
edge[cnte].v=b;
edge[cnte].val=val;
edge[cnte].next=head[a];
head[a]=cnte++;
} int item[N],lev[N],dist[N],vis[N]; int dijkstra()
{
for(int i=head[]; i!=; i=edge[i].next)
{
if(vis[edge[i].v]==)
dist[edge[i].v]=edge[i].val;
}
dist[]=;
vis[]=;
for(int i=; i<=n; i++)
{
int u=,minn=INF;
for(int j=; j<=n; j++)
{
if(dist[j]<minn&&vis[j]==)
{
minn=dist[j];
u=j;
}
}
vis[u]=;
for(int j=head[u]; j!=; j=edge[j].next)
{
int v=edge[j].v;
int val=edge[j].val;
if(dist[v]>dist[u]+val&&vis[v]==)
dist[v]=dist[u]+val;
}
}
} int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(head,,sizeof(head));
cnte=;
int minlv=INF,maxlv=;
for(int i=; i<=n; i++)
{
int x;
scanf("%d%d%d",&item[i],&lev[i],&x);
addEdge(,i,item[i]);
minlv=min(minlv,lev[i]);
maxlv=max(maxlv,lev[i]);
while(x--)
{
int ver,value;
scanf("%d%d",&ver,&value);
addEdge(ver,i,value);
}
}
int res=item[];
for(int i=minlv; i<=maxlv; i++)
{
memset(vis,,sizeof(vis));
for(int i=; i<=n; i++)
dist[i]=INF;
for(int j=; j<=n; j++)
if(lev[j]>i||i-lev[j]>m)
vis[j]=;
dijkstra();
//cout<<dist[1]<<endl;
res=min(res,dist[]);
}
printf("%d\n",res);
}
return ;
}
POJ_1062_(dijkstra)的更多相关文章
- Dijkstra 单源最短路径算法
Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...
- 最短路径算法-Dijkstra
Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...
- [板子]最小费用最大流(Dijkstra增广)
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...
- POJ 2253 Frogger(Dijkstra)
传送门 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39453 Accepted: 12691 Des ...
- POJ 2387 Til the Cows Come Home(最短路 Dijkstra/spfa)
传送门 Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 46727 Acce ...
- Dijkstra 算法
all the nodes should be carectorized into three groups: (visited, front, unknown) we should pay spec ...
- 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)
题目链接 中文题,迪杰斯特拉最短路径算法模板题. #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f ],v ...
- 51nod1459(带权值的dijkstra)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 题意:中文题诶- 思路:带权值的最短路,这道题数据也没 ...
- 求两点之间最短路径-Dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.D ...
随机推荐
- HDU 4968(杭电多校#9 1009题)Improving the GPA (瞎搞)
题目地址:HDU 4968 这题的做法是全部学科的学分情况枚举,然后推断在这样的情况下是否会符合平均分. 直接暴力枚举就可以. 代码例如以下: #include <cstring> #in ...
- 创建一个Cordova完整应用
本文承接上篇<创建Cordova插件>,通过实现一个简单的应用作为这个Cordova0基础系列的结束. 前边对Cordova编程已经讲了不少了.还没有拿真实应用为例完整的演练一遍构建过程. ...
- Linux bash: scp: command not found的问题记录
,总结 scp成功,须要两个server都安装了scp服务才行.
- C#获取当前活动窗口句柄
c# 获取当前活动窗口句柄,获取窗口大小及位置 2018年04月26日 13:48:21 漂泊_人生 阅读数:1889 需调用API函数 需在开头引入命名空间using System.Runtim ...
- HDU-4643-GSM(DFS)
Problem Description Xiao Ming is traveling around several cities by train. And the time on the train ...
- NSArray和NSMutableArray的常用方法 (转)
NSArray和NSMutableArray的常用方法 (转) (2013-09-06 15:13:46) 标签: it 分类: ios编程 初始化方法: 1.init返回一个空数组 2.i ...
- c# WinForm的一些问题
工作中,用WinForm写了一段程序,刚开始运行正常,后来替换为公司框架的时候,发现原来用Label拼的表格控件,里面的Text无法显示,后来发现,父控件的ForColor为Control导致,子空间 ...
- BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay
BZOJ_1862_[Zjoi2006]GameZ游戏排名系统&&BZOJ_1056_[HAOI2008]排名系统_Splay Description 排名系统通常要应付三种请求:上传 ...
- LED全彩显示屏色度空间
摘要:LED全彩显示屏.LED电子大屏幕如果要有一个良好的视觉效果,其中色度占有一席重要的位置,那么该如何让LED显示屏的色度更均匀.合理呢,下面为大家总结出以下几点,供大家参考. LED全彩显示屏. ...
- 杂项-Java:JSP
ylbtech-杂项-Java:JSP 1.返回顶部 1. JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Micros ...