链接:迷宫游戏 问题 - 51Nod  http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459
基准时间限制: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
    这题就是dijkstra的模板题,只要增加一个从起点uv的最大分值就可以了。
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. #define inf 0x3f3f3f
  6. int map[][],vis[],dis[],score[],maxs[];//maxs[i]表示
  7. int n,m,k,t,start,end; //从起点到i点的最大分值,score记录每个点的输入分值
  8. void init()
  9. {
  10. memset(vis,,sizeof(vis));
  11. for(int i=;i<n;i++)
  12. for(int j=;j<n;j++)
  13. map[i][j]=inf;
  14. }
  15. void dijkstra(int s)
  16. {
  17. for(int i=;i<n;i++)
  18. {
  19. dis[i]=map[s][i];
  20. if(map[s][i]!=inf&&i!=s)
  21. maxs[i]=score[i]+score[s];//给maxs赋初始值
  22. else
  23. maxs[i]=score[s];
  24. }
  25. dis[s]=;
  26. vis[s]=;
  27. for(int i=;i<n;i++)
  28. {
  29. int min1=inf,u;
  30. for(int j=;j<n;j++)
  31. {
  32. if(!vis[j]&&min1>dis[j])
  33. {
  34. min1=dis[j];
  35. u=j;
  36. }
  37. }
  38. vis[u]=;
  39. for(int j=;j<n;j++)
  40. {
  41. if(!vis[j])
  42. {
  43. if(dis[j]==dis[u]+map[u][j])//如果松弛时距离相同,那么就把maxs更新为更大的
  44. maxs[j]=max(maxs[j],maxs[u]+score[j]);
  45. else if(dis[j]>dis[u]+map[u][j])
  46. {
  47. dis[j]=dis[u]+map[u][j];
  48. maxs[j]=maxs[u]+score[j];
  49. }
  50. }
  51. }
  52. if(vis[end])
  53. return;
  54. }
  55. }
  56. int main()
  57. {
  58. while(scanf("%d%d%d%d",&n,&m,&start,&end)!=EOF)
  59. {
  60. init();
  61. for(int i=;i<n;i++)
  62. {
  63. scanf("%d",&score[i]);
  64. }
  65. for(int i=;i<m;i++)
  66. {
  67. int u,v,w;
  68. scanf("%d%d%d",&u,&v,&w);
  69. if(map[u][v]>w)
  70. map[u][v]=map[v][u]=w;
  71. }
  72. dijkstra(start);
  73. printf("%d %d\n",dis[end],maxs[end]);
  74. }
  75. return ;
  76. }

51nod 1459 迷宫游戏 dijkstra模板的更多相关文章

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

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

  2. 51nod 1459 迷宫游戏【最短路拓展】

    1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB   你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连 ...

  3. 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)

    题目链接 中文题,迪杰斯特拉最短路径算法模板题. #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f ],v ...

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

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

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

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

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

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

  7. 51nod1459 迷宫游戏

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

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

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

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

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

随机推荐

  1. Flex4学习笔记1---基本语法

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  2. pycharm中查找替换妙用

    1.二行空格变一行(转载https://www.cnblogs.com/dreamfine/p/7760575.html) 网上COPY的代码,经常多出一个空行,不用一行行删除了,用替换功能吧,查找 ...

  3. asp.net在配置文件里设置多种编码方式的研究

    我们在做asp.net的程序时,在根目录下肯定会有一个web.config的文件, 有点开发经验的可能都知道,它是配置程序的全局信息的地方, 当然了,也可以在这里做更多的事情,下面我们来研究一下 ,如 ...

  4. 静态属性@property

    property 作用其实把类里面的逻辑给隐藏起来(封装逻辑,让用户调用的时候感知不到你的逻辑) property实例1:class Room: def __init__(self): pass @p ...

  5. react-native-echarts 安卓版打包后,部分手机图表不显示问题

    1. 找到  node_modules\native-echarts\src\components\Echarts\tpl.html 文件 ,把它复制到 (android\app\src\main\a ...

  6. [转]使用Ubuntu Live CD修复Grub引导教程

    这个教程的方法我用过了,能够解决了我的问题. 这篇文章主要介绍了使用Ubuntu Live CD修复Grub引导教程,本文以 Ubuntu Live CD 修复 Grub 引导为例,需要的朋友可以参考 ...

  7. 我要重新开始学习C++了!

    C++实在是博大精深!之前总不想读厚厚的C++ Primer. 然而,现在的水平真的只是初学者!只是因为写的代码太简单,所以没有用到一些特性.可以说还是门外汉! 写笔记!

  8. mysql 索引优化知识整理笔记

    http://blog.csdn.net/zhxp_870516/article/details/8434539 http://www.jb51.net/article/49346.htm https ...

  9. docker之手动构建新的镜像

    转自:https://www.cnblogs.com/jsonhc/p/7766561.html 查看本地现有镜像: [root@docker ~]# docker images REPOSITORY ...

  10. 在CentOS7中利用yum命令安装mysql

    在CentOS7中利用yum命令安装mysql 原创 2016年08月31日 10:42:33 标签: mysql / centos 4832 一.说明 我们是在VMware虚拟机上安装的mysql, ...