http://acm.hdu.edu.cn/showproblem.php?pid=2851

首先有n层,每层的路径都有一个起点和终点和对应的危险值,如果某两层之间有交集,就能从这一层上到另外一层,不过只能上不能下.

给定m个目标点求出到目标点的最小危险值.

因为权值不一样,所以不能用bfs,dijkstra就好。

建图 就是把所有相连的边处理出来,因为读入是对y排序的.然后以此dijkstra就能求出所有点的最小花费。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <vector>
 4 #include <queue>
 5 using namespace std;
 6 const int maxn = 2010;
 7 const int INF = 1<<30;
 8 int n,m;
 9 struct node
10 {
11     int x,y,cost;
12 }f[maxn];
13
14 struct edge
15 {
16     int to,cost;
17     edge(){}
18     edge(int x,int y) {
19         to=x;
20         cost=y;
21     }
22 };
23 typedef pair<int,int>P;
24 vector<edge>G[maxn];
25 int d[maxn];
26 void dijkstra(int s)
27 {
28     priority_queue<P,vector<P>,greater<P> >que;
29     for(int i=1;i<=maxn;i++) d[i]=INF;
30     d[s]=f[1].cost;
31     que.push(P(f[1].cost,s));
32
33     while(!que.empty())
34     {
35         P p=que.top();que.pop();
36         int v=p.second;
37         if(d[v]<p.first) continue;
38         for(int i=0;i<G[v].size();i++)
39         {
40             edge e=G[v][i];
41             if(d[e.to]>d[v]+e.cost)
42             {
43                 d[e.to]=d[v]+e.cost;
44                 que.push(P(d[e.to],e.to));
45             }
46         }
47     }
48 }
49
50 int main()
51 {
52     //freopen("a.txt","r",stdin);
53     int t,k;
54     scanf("%d",&t);
55     while(t--)
56     {
57         scanf("%d%d",&n,&m);
58         for(int i=1;i<=n;i++)
59         {
60             G[i].clear();
61             scanf("%d%d%d",&f[i].x,&f[i].y,&f[i].cost);
62         }
63         //printf("%d\n",n);
64         for(int i=1;i<=n;i++)
65         {
66             for(int j=i+1;j<=n;j++)
67                 if(f[j].x<=f[i].y)
68                 {
69                     G[i].push_back(edge(j,f[j].cost));
70                    // printf("%d %d %d\n",i,j,p[i].cost+p[j].cost);
71                 }
72         }
73         dijkstra(1);
74         for(int i=0;i<m;i++)
75         {
76             scanf("%d",&k);
77             if(d[k]==INF) printf("-1\n");
78             else
79             printf("%d\n",d[k]);
80         }
81     }
82     return 0;
83 }

转载于:https://www.cnblogs.com/nowandforever/p/4549349.html

hdu - 2851 Lode Runner (最短路)相关推荐

  1. hdu - 2851 - Lode Runner(Dijkstra)

    题意:输入测试组数C,输入N(N条路)和M(M个目标),接着输入N条路的起始横坐标S[i]与终止横坐标E[i],还有这条路的危险值W[i],这些路已按E从小到大排了序.接着输入M个目标路,输出走到相应 ...

  2. hdu 2851 Lode Runner

    下午看virtual contest有比赛,我就随便找了个,做的是09年的多校联合训练的题. 一看就是最短路啊,脑子一抽,开始写,写完发现题意理解错了T T...笨蛋... 这个是,每条路给了横坐标, ...

  3. HDU 2851 Lode Runner(简单DP)

    比较简单的一道DP题,题意是给你n条路,每条路的最右边有一个梯子,也就是说只要一条路的最右边在另一条路上,那么就可以从这条路去那条路. 一开始没考虑清楚状态怎么表示,TLE了一次. 因为路的最右边从小 ...

  4. 【HDOJ】2851 Lode Runner

    开始没理解题意.原来destinations是指路的序号.而不是点.DP. 1 #include <stdio.h> 2 #include <string.h> 3 4 int ...

  5. HDU 6071 Lazy Running (最短路)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6071 题解 又是一道虐信心的智商题... 首先有一个辅助问题,这道题转化了一波之后就会化成这个问题: ...

  6. hdu 5521 Meeting(最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 题意:有1-n共n个点,给出m个块(完全图),并知道块内各点之间互相到达花费时间均为ti.已知两 ...

  7. hdu 6026 Deleting Edges(最短路计数)

    题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边. 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路. ...

  8. HDU 3339 In Action 最短路+01背包

    题目链接: 题目 In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  9. HDU Victor and World (最短路+状态压缩)

    题目链接:传送门 题意: n个城市m条路.刚開始在点1,求把每一个城市都遍历一边最后回到1的花费的最小值. 分析: 我们首先须要预处理出随意两个国家之间的最短距离.由于数据范围非常小,所以直接用Flo ...

最新文章

  1. miui12 android版本,miui12基于安卓几版本开发的?miui12是安卓11吗
  2. 泛化,关联,聚合,合成,依赖的关系
  3. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
  4. CSP认证201609-4 交通规划[C++题解]:最短路径树、dijkstra求单源最短路、递推思想
  5. EMF+GEF的属性页问题
  6. 抖音店播 就是我们说的商家自播品牌自播
  7. 兽用体温计行业调研报告 - 市场现状分析与发展前景预测
  8. [转载] 利用python对csv文件进行简单的数据分析
  9. Alfred 4 for Mac(应用快速启动器)
  10. oracle硬解析和软解析
  11. Problem D: 平面划分
  12. svm分类器_用人话讲明白支持向量机SVM(上)
  13. TCP 协议报文格式
  14. Juniper交换机配置命令_学习笔记
  15. 海思3516A 运行mp4box工具,移植gpac 0.4.0
  16. 【编译汇编链接】COFF文件及结构说明
  17. OSChina 周日乱弹 —— 这二叉树长得,标致!
  18. pytorch —— 正则化之weight_decay
  19. DQ77KB升级bios和AMT设置
  20. Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识

热门文章

  1. 打卡第一天 704. 二分查找、27. 移除元素
  2. 智慧银行数据解决方案:人工智能如何助力银行更智慧?
  3. 取消https的ssl验证
  4. Java 保留小数位时整数位0丢失问题
  5. 小米AI实验室最新研究论文收录于COLING 2022,介绍一种更有效的鲁棒性神经机器翻译训练方法...
  6. GIS开发扫盲贴--地理坐标系
  7. 滑模变结构控制高超声速飞行器(源代码)
  8. Silicon Lab Ember Zigbee学习杂谈------zcl extension
  9. 四句话解决const赋值问题
  10. android旅游app动态的,Android平台深秋出游必备APP推荐