基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么?
Input
  1. 第一行4个整数(<=500), m, start, endn表示房间的个数,房间编号从0到(- 1),m表示道路数,任意两个房间之间最多只有一条道路,startend表示起点和终点房间的编号。
  2. 第二行包含n个空格分隔的正整数(不超过600),表示进入每个房间你的得分。
  3. 再接下来m行,每行3个空格分隔的整数x, y, z (0<z<=200)表示道路,表示从房间x到房间y(双向)的道路,注意,最多只有一条道路连结两个房间, 你需要的时间为z
  4. 输入保证从startend至少有一条路径。
Output
  1. 一行,两个空格分隔的整数,第一个表示你最少需要的时间,第二个表示你在最少时间前提下可以获得的最大得分。
Input示例
  1. 3 2 0 2
  2. 1 2 3
  3. 0 1 10
  4. 1 2 11
Output示例
  1. 21 6

题意:中文题

思路:迪杰斯特拉的带权路径搜索

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <cmath>
  6. #include <queue>
  7. using namespace std;
  8. #define INF 0x3f3f3f3f
  9. #define PI acos(-1.0)
  10. #define N 510
  11. int n,m,start,end;
  12. int v[N],dis[N],low[N],vis[N];
  13. int g[N][N];
  14. void init()
  15. {
  16. for(int i = 0; i < n; i++)
  17. {
  18. for(int j = 0; j < n; j++)
  19. {
  20. if(i == j)
  21. g[i][j] = 0;
  22. else
  23. g[i][j] = INF;
  24. }
  25. }
  26. }
  27. void MAP()
  28. {
  29. while(m--)
  30. {
  31. int a,b,dis;
  32. scanf("%d%d%d",&a,&b,&dis);
  33. if(dis < g[a][b])
  34. g[a][b] = g[b][a] = dis;
  35. }
  36. }
  37. void dijk()
  38. {
  39. for(int i = 0; i < n; i++)
  40. dis[i] = INF;
  41. memset(vis,0,sizeof(vis));
  42. memset(low,0,sizeof(low));
  43. dis[start] = 0;
  44. low[start] = v[start];
  45. for(int i = 0; i < n; i++)
  46. {
  47. int MIN = INF;
  48. int maxn = 0;
  49. int next;
  50. for(int j = 0; j < n; j++)
  51. {
  52. if(!vis[j] && dis[j] < MIN)
  53. {
  54. MIN = dis[j];
  55. next = j;
  56. maxn = low[j];
  57. }
  58. if(!vis[j] && dis[j] == MIN && maxn < low[j])
  59. {
  60. next = j;
  61. maxn = low[j];
  62. }
  63. }
  64. if(MIN == INF)
  65. break;
  66. vis[next] = 1;
  67. for(int j = 0; j < n; j++)
  68. {
  69. if(!vis[j] && dis[j] > dis[next] + g[next][j])
  70. {
  71. dis[j] = dis[next] + g[next][j];
  72. low[j] = low[next] + v[j];
  73. }
  74. if(!vis[j] && dis[j]==dis[next]+g[next][j] && low[j]<low[next]+v[j])
  75. low[j] = low[next] + v[j];
  76. }
  77. }
  78. }
  79. int main()
  80. {
  81. scanf("%d%d%d%d",&n,&m,&start,&end);
  82. for(int i = 0; i < n; i++)
  83. scanf("%d",&v[i]);
  84. init();
  85. MAP();
  86. dijk();
  87. printf("%d %d\n",dis[end],low[end]);
  88. return 0;
  89. }

51nod1459 迷宫游戏的更多相关文章

  1. 51nod--1459 迷宫游戏 (dijkstra)

    1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可 ...

  2. c语言迷宫游戏的实现

    // // main.c // 迷宫游戏代码实现 // #include <stdio.h> #define ROW 6 //宏定义行 #define COL 6 //宏定义列 /** * ...

  3. 51nod 1459 迷宫游戏(dij)

    题目链接:51nod 1459 迷宫游戏 dij裸题. #include<cstdio> #include<cstring> #include<algorithm> ...

  4. 用webgl打造自己的3D迷宫游戏

    用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam    背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...

  5. 【Qt编程】3D迷宫游戏

    说起迷宫想必大家都很熟悉,个人感觉迷宫对人的方向感是很大的考验,至少我的方向感是不好的,尤其是在三维空间中.由于这段时间帮导师做项目用到了三维作图,便心血来潮想做个三维迷宫玩玩.要想画出三维的迷宫游戏 ...

  6. 51 NOd 1459 迷宫游戏 (最短路径)

    1459 迷宫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...

  7. 51Nod 1459:迷宫游戏(最短路)

    1459 迷宫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...

  8. 51nod 1459 迷宫游戏 dijkstra模板

    链接:迷宫游戏 问题 - 51Nod  http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 1459 迷宫游戏  基准 ...

  9. 51nod1459迷宫问题—(迪杰斯特拉)

    1459 迷宫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...

随机推荐

  1. 跨域请求Ajax(POST)处理方法

    getXSSAjax(function() {  //跨域请求        that.ajaxDara(self);}, (bs_tita.webapi || "http://webapi ...

  2. Linux下汇编语言学习笔记33 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  3. Meeting 加虚拟边

    Bessie and her friend Elsie decide to have a meeting. However, after Farmer John decorated his fence ...

  4. Charm Bracelet-POJ3624(01背包)

    http://poj.org/problem?id=3624 Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  5. P1631 序列合并 洛谷

    https://www.luogu.org/problem/show?pid=1631 题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个. ...

  6. idea中javaweb的mysql8.0.15配置问题

    mysql8.0.x以后的版本在连接数据库的时候有些不同. 首先: Class.forName("com.mysql.cj.jdbc.Driver"); 其次: DriverMan ...

  7. 图解Windows下安装WebLogic

    Oracle 的Weblogic分开发者版本和生产版本,有32位和64位.一般生产版本的weblogic是64位的,安装文件是一个大小为1G多的jar包.去oracle官网上下载64版weblogic ...

  8. Apple Swift编程语言新手教程

    文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程 ...

  9. Android上拉查看详情实现

    京东淘宝有那么一种效果就是,上拉能够查看宝贝的详情,这里我也实现了一个类似的效果,也能够移植到商业项目上:先看看简单的效果图 实现原理事实上是利用了ScrollView的滚动和view的touch事件 ...

  10. 一个python自动化测试的例子

    http://blog.csdn.net/galen2016/article/details/70882483 https://www.cnblogs.com/TankXiao/category/47 ...