51nod 1459 迷宫游戏 dijkstra模板


- 第一行4个整数n (<=500), m, start, end。n表示房间的个数,房间编号从0到(n - 1),m表示道路数,任意两个房间之间最多只有一条道路,start和end表示起点和终点房间的编号。
- 第二行包含n个空格分隔的正整数(不超过600),表示进入每个房间你的得分。
- 再接下来m行,每行3个空格分隔的整数x, y, z (0<z<=200)表示道路,表示从房间x到房间y(双向)的道路,注意,最多只有一条道路连结两个房间, 你需要的时间为z。
- 输入保证从start到end至少有一条路径。
- 一行,两个空格分隔的整数,第一个表示你最少需要的时间,第二个表示你在最少时间前提下可以获得的最大得分。
- 3 2 0 2
- 1 2 3
- 0 1 10
- 1 2 11
- 21 6
这题就是dijkstra的模板题,只要增加一个从起点u到v的最大分值就可以了。
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define inf 0x3f3f3f
- int map[][],vis[],dis[],score[],maxs[];//maxs[i]表示
- int n,m,k,t,start,end; //从起点到i点的最大分值,score记录每个点的输入分值
- void init()
- {
- memset(vis,,sizeof(vis));
- for(int i=;i<n;i++)
- for(int j=;j<n;j++)
- map[i][j]=inf;
- }
- void dijkstra(int s)
- {
- for(int i=;i<n;i++)
- {
- dis[i]=map[s][i];
- if(map[s][i]!=inf&&i!=s)
- maxs[i]=score[i]+score[s];//给maxs赋初始值
- else
- maxs[i]=score[s];
- }
- dis[s]=;
- vis[s]=;
- for(int i=;i<n;i++)
- {
- int min1=inf,u;
- for(int j=;j<n;j++)
- {
- if(!vis[j]&&min1>dis[j])
- {
- min1=dis[j];
- u=j;
- }
- }
- vis[u]=;
- for(int j=;j<n;j++)
- {
- if(!vis[j])
- {
- if(dis[j]==dis[u]+map[u][j])//如果松弛时距离相同,那么就把maxs更新为更大的
- maxs[j]=max(maxs[j],maxs[u]+score[j]);
- else if(dis[j]>dis[u]+map[u][j])
- {
- dis[j]=dis[u]+map[u][j];
- maxs[j]=maxs[u]+score[j];
- }
- }
- }
- if(vis[end])
- return;
- }
- }
- int main()
- {
- while(scanf("%d%d%d%d",&n,&m,&start,&end)!=EOF)
- {
- init();
- for(int i=;i<n;i++)
- {
- scanf("%d",&score[i]);
- }
- for(int i=;i<m;i++)
- {
- int u,v,w;
- scanf("%d%d%d",&u,&v,&w);
- if(map[u][v]>w)
- map[u][v]=map[v][u]=w;
- }
- dijkstra(start);
- printf("%d %d\n",dis[end],maxs[end]);
- }
- return ;
- }
51nod 1459 迷宫游戏 dijkstra模板的更多相关文章
- 51nod 1459 迷宫游戏(dij)
题目链接:51nod 1459 迷宫游戏 dij裸题. #include<cstdio> #include<cstring> #include<algorithm> ...
- 51nod 1459 迷宫游戏【最短路拓展】
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连 ...
- 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)
题目链接 中文题,迪杰斯特拉最短路径算法模板题. #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f ],v ...
- 51 NOd 1459 迷宫游戏 (最短路径)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
- 51Nod 1459:迷宫游戏(最短路)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
- 51nod--1459 迷宫游戏 (dijkstra)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可 ...
- 51nod1459 迷宫游戏
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你 ...
- c语言迷宫游戏的实现
// // main.c // 迷宫游戏代码实现 // #include <stdio.h> #define ROW 6 //宏定义行 #define COL 6 //宏定义列 /** * ...
- 用webgl打造自己的3D迷宫游戏
用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam 背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...
随机推荐
- Flex4学习笔记1---基本语法
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- pycharm中查找替换妙用
1.二行空格变一行(转载https://www.cnblogs.com/dreamfine/p/7760575.html) 网上COPY的代码,经常多出一个空行,不用一行行删除了,用替换功能吧,查找 ...
- asp.net在配置文件里设置多种编码方式的研究
我们在做asp.net的程序时,在根目录下肯定会有一个web.config的文件, 有点开发经验的可能都知道,它是配置程序的全局信息的地方, 当然了,也可以在这里做更多的事情,下面我们来研究一下 ,如 ...
- 静态属性@property
property 作用其实把类里面的逻辑给隐藏起来(封装逻辑,让用户调用的时候感知不到你的逻辑) property实例1:class Room: def __init__(self): pass @p ...
- react-native-echarts 安卓版打包后,部分手机图表不显示问题
1. 找到 node_modules\native-echarts\src\components\Echarts\tpl.html 文件 ,把它复制到 (android\app\src\main\a ...
- [转]使用Ubuntu Live CD修复Grub引导教程
这个教程的方法我用过了,能够解决了我的问题. 这篇文章主要介绍了使用Ubuntu Live CD修复Grub引导教程,本文以 Ubuntu Live CD 修复 Grub 引导为例,需要的朋友可以参考 ...
- 我要重新开始学习C++了!
C++实在是博大精深!之前总不想读厚厚的C++ Primer. 然而,现在的水平真的只是初学者!只是因为写的代码太简单,所以没有用到一些特性.可以说还是门外汉! 写笔记!
- mysql 索引优化知识整理笔记
http://blog.csdn.net/zhxp_870516/article/details/8434539 http://www.jb51.net/article/49346.htm https ...
- docker之手动构建新的镜像
转自:https://www.cnblogs.com/jsonhc/p/7766561.html 查看本地现有镜像: [root@docker ~]# docker images REPOSITORY ...
- 在CentOS7中利用yum命令安装mysql
在CentOS7中利用yum命令安装mysql 原创 2016年08月31日 10:42:33 标签: mysql / centos 4832 一.说明 我们是在VMware虚拟机上安装的mysql, ...