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 ...
随机推荐
- oralce之复杂查询举例
表结构: S(SNO,SNAME) 代表 学号.学生姓名: C(CNO,CNAME,CTEACHER) 代表 课号,课程名称.授课老师 SC(SNO,CNO,SCGRADE) 代表 学号.课号.课程成 ...
- C++中使用Json的方法
使用 C++ 处理 JSON 数据交换格式 一.摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON官 ...
- 怎样托管你的项目到github上具体教程
本文将具体介绍怎样托管你的项目到github上 转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50441442 本文出自:[lxk_19 ...
- 使用 BenchmarkDotnet 测试代码性能 【Win10】单元测试中捕获异步方法的指定异常
先来点题外话,清明节前把工作辞了(去 tm 的垃圾团队,各种拉帮结派.勾心斗角).这次找工作就得慢慢找了,不能急了,希望能找到个好团队,好岗位吧.顺便这段时间也算是比较闲,也能学习一下和填掉手上的坑. ...
- S5P4418裸机开发系列教程--源代码下载
S5P4418裸机系列教程之stdio S5P4418裸机系列教程之shell命令行 S5P4418裸机系列教程之串口回显 S5P4418裸机系列教程之复位測试 S5P4418裸机系列教程之led跑马 ...
- 图片存储系统TFS
1 TFS和GFS比较 1.1 GFS的应用场景 第一,百万级别的文件,并且是大文件,文件都是100MB以上,1G级别的文件很常见. 第二,集群是建立在商业计算机之上,并不可靠,监控各个节点的状态,当 ...
- spring 之 IOC 依赖注入详解
当我们对一个javaBean进行实例化时,在原本的情况下我们会选择新建一个接口,然后进行实例化,为了进一步降低耦合度我们还会使用工厂模式进行封装. 例: 当我们想要去造,Chinese.America ...
- SQLyog普通版与SQLyog企业版对比分析
这里,为什么要写这篇博客呢? 对于SQLyog普通版而言,只能复制到不同的数据库里,这样显得麻烦,当然,你也可以用语句来操作达到实现目的. 具体做法: MySQL复制旧表的结构及数据到新表 CREAT ...
- 【Codevs1183】泥泞的道路
Position: http://codevs.cn/problem/1183/ List Codevs1183 泥泞的道路 List Description Input Output Sample ...
- hdu1814 Peaceful Commission——2-SAT
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1814 第一次的2-SAT,推荐博客:https://blog.csdn.net/jarjingx/arti ...