1459 迷宫游戏
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础
你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么?

Input
第一行4个整数n (<=500), m, start, end。n表示房间的个数,房间编号从0到(n - 1),m表示道路数,任意两个房间之间最多只有一条道路,start和end表示起点和终点房间的编号。
第二行包含n个空格分隔的正整数(不超过600),表示进入每个房间你的得分。
再接下来m行,每行3个空格分隔的整数x, y, z 表示道路,表示从房间x到房间y(双向)的道路,注意,最多只有一条道路连结两个房间, 你需要的时间为z。
输入保证从start到end至少有一条路径。

Output
一行,两个空格分隔的整数,第一个表示你最少需要的时间,第二个表示你在最少时间前提下可以获得的最大得分。

Input示例
3 2 0 2
1 2 3
0 1 10
1 2 11

Output示例
21 6
题解:在松弛操作中。优先判断路程,在路程相等时判断价值,过程中维护价值的最大值。
代码:

#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string.h>
#define bababaa printf("!!!!!!!\n")
#define ll long long
using namespace std;
const int N=1005;
int vis[N];
int ans[N];
int point[N];
int dis[N];
int head[N<<1];
int n,m,t,cont,x,y,z,st,en;
struct node
{int to,next,cost;
}edge[N*N*2];
void add(int from,int to,int cost)
{edge[cont].to=to;edge[cont].cost=cost;edge[cont].next=head[from];head[from]=cont++;
}
void SPFA(int x)
{memset(vis,0,sizeof(vis));memset(ans,0,sizeof(ans));for(int i=0;i<n;i++)dis[i]=1e6;dis[x]=0;vis[x]=1;queue<int>q;q.push(x);while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;int c=edge[i].cost;if(dis[v]>dis[u]+c){ans[v]=ans[u]+point[v];dis[v]=dis[u]+c;if(vis[v]==0){vis[v]=1;q.push(v);}}else if(dis[v]==dis[u]+c){if(ans[v]<ans[u]+point[v]){ans[v]=ans[u]+point[v];if(!vis[v]){vis[v]=1;q.push(v);}}}}}printf("%d %d\n",dis[en],ans[en]+point[st]);
}
void init()
{cont=1;memset(head,-1,sizeof(head));scanf("%d%d%d%d",&n,&m,&st,&en);for(int i=0;i<n;i++){scanf("%d",&point[i]);}for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);add(x,y,z);add(y,x,z);}
}
int main()
{init();SPFA(st);
}

51Nod1459 迷宫游戏(带权最短路)相关推荐

  1. CDOJ 1070 秋实大哥打游戏 带权并查集

    链接 F - 秋实大哥打游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  2. PTA L2-001 紧急救援 (点带权最短路)

    <题目链接> 题目大意: 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...

  3. 【PAT - 甲级 - 1018】Public Bike Management (带权最短路,多条最短路中加条件,DFS)

    题干: 链接:https://www.nowcoder.com/questionTerminal/4b20ed271e864f06ab77a984e71c090f 来源:牛客网 There is a ...

  4. 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集

    秋实大哥打游戏 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

  5. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

  6. dijkstra邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

  7. cdoj 1070 秋实大哥打游戏 带权并查集

    题目链接: http://acm.uestc.edu.cn/#/problem/show/1070 题意: 题解: 带权并查集 每次往上更新的时候,顺便把边权更新了就好 记住得路径压缩 代码: 1 # ...

  8. 【ZJOI2015】幻想乡战略游戏【点分树】【带权重心】

    题意:nnn个点带边权的树,动态修改点权viv_ivi​,最小化 钦定一个点xxx 后 ∑idist(x,i)∗vi\sum\limits_{i} dist(x,i)*v_ii∑​dist(x,i)∗ ...

  9. python迷宫小游戏代码_课内资源 - 基于python实现的迷宫游戏

    一.项目概述与编译环境 本次大作业选题为题目2,即小兔子找胡萝卜的迷宫问题,最终完成开发的游戏名为Caveman and Treasure(穴居人寻宝),游戏整体界面如下: 该项目在windows下编 ...

最新文章

  1. cmd批处理命令与变量(下)
  2. boost::polygon模块实现自定义点相关的测试程序
  3. 那些年伴我一起成长的SAP装备
  4. python value函数_python 函数基础
  5. python循环遍历所有目录_python 遍历文件夹
  6. 诺基亚发布最新研究报告:多角度分析5G服务的投资回报
  7. 每天一道算法题(13)——使用递归颠倒栈
  8. 浙江大学_包家立计算生物学_神经网络
  9. HTTP协议到底是怎么回事
  10. 「开源资讯」Sentinel Go 0.4.0 发布,支持热点流量防护能力
  11. Intellij IDEA破解激活
  12. 星星之火OIer:总分题解
  13. flutter能开发游戏吗_Flutter Flame游戏开发上手(1)
  14. linux notifier
  15. iOS App怎么上架到苹果TestFlight?
  16. 7.Markdown图片
  17. 一个压长定式衍生出的一个角部攻防
  18. php大商创商城,news.php · Mihok/ecshop大商创商城 - Gitee.com
  19. 《Educated》《你当像鸟飞往你的山》阅读笔记
  20. B2C网站建设的要点分析

热门文章

  1. java Supplier接口与示例
  2. 复数的物理意义是什么?
  3. debian11删除swap分区之后出现mdadm no arrays found in config file or automatically的的解决方法
  4. 【嵌入式】嵌入式设备实现网络功能——综述
  5. 看完这篇你一定能掌握Linux(近三万字)
  6. 路由器可以关闭的一些不必要服务
  7. 经典面试题:翻转英文句子中单词的顺序
  8. 成本与体验的“非零和博弈”
  9. 1、Chrome之Elements功能面板
  10. 找零钱最佳组合的测试用例