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 背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...
随机推荐
- requestAnimFrame动画兼容性封装
window.requestAnimFrame=function(){ return window.requestAnimationFrame ||window.webkitRequestAnimat ...
- Flex的一些小实例
1,以上是一个导航菜单 2一下是一个撑开的mx:Spacer
- ASPxCallbackPanel(珍藏版)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AspxCallbackPane ...
- $tojson和json.stringify的区别
JSON.stringify(),将value(Object,Array,String,Number...)序列化为JSON字符串 JSON.parse(), 将JSON数据解析为js原生值 toJS ...
- 讲讲亿级PV的负载均衡架构
引言 本来没想写这个题材的,为了某某童鞋能够更好的茁壮成长,临时写一篇负载均衡的.负载均衡,大家可能听过什么3层负载均衡.4层负载均衡.7层负载均衡什么的?那这是怎么分的呢,ok,是根据osi七层网络 ...
- [转]USB之Part 4 - Protocol
原地址http://www.usbmadesimple.co.uk/ums_4.htm Controlling a Device Before we go into detail, we need t ...
- windows下面的java项目打成jar放到XShell终端上面进行远程调试
前言: java项目打成jar放到linux上面运行,但是linux上面没有eclipse不能进行debug,所以要在windows的eclipse中进行远程调试. 需要注意的是!!!-->在e ...
- jianx vtritualbox 虚拟镜像的体积
https://blog.csdn.net/ganshuyu/article/details/46360271
- JAVA8-待续
1. 函数式编程,因为在并发和时间驱动编程中的优势,函数式编程又逐渐流行起来 以前是实现一个比较器需要实现Comparator接口,并重写compare方法,以下为两种实现方法(类似还有线程,事件等) ...
- Review CSS Selectors
Throughout this lesson, you learned how to select HTML elements with CSS and apply styles to them. L ...