51nod1459 迷宫游戏
第一行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
题意:中文题
思路:迪杰斯特拉的带权路径搜索
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
using namespace std;
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 510
int n,m,start,end;
int v[N],dis[N],low[N],vis[N];
int g[N][N];
void init()
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i == j)
g[i][j] = 0;
else
g[i][j] = INF;
}
}
}
void MAP()
{
while(m--)
{
int a,b,dis;
scanf("%d%d%d",&a,&b,&dis);
if(dis < g[a][b])
g[a][b] = g[b][a] = dis;
}
}
void dijk()
{
for(int i = 0; i < n; i++)
dis[i] = INF;
memset(vis,0,sizeof(vis));
memset(low,0,sizeof(low));
dis[start] = 0;
low[start] = v[start];
for(int i = 0; i < n; i++)
{
int MIN = INF;
int maxn = 0;
int next;
for(int j = 0; j < n; j++)
{
if(!vis[j] && dis[j] < MIN)
{
MIN = dis[j];
next = j;
maxn = low[j];
}
if(!vis[j] && dis[j] == MIN && maxn < low[j])
{
next = j;
maxn = low[j];
}
}
if(MIN == INF)
break;
vis[next] = 1;
for(int j = 0; j < n; j++)
{
if(!vis[j] && dis[j] > dis[next] + g[next][j])
{
dis[j] = dis[next] + g[next][j];
low[j] = low[next] + v[j];
}
if(!vis[j] && dis[j]==dis[next]+g[next][j] && low[j]<low[next]+v[j])
low[j] = low[next] + v[j];
}
}
}
int main()
{
scanf("%d%d%d%d",&n,&m,&start,&end);
for(int i = 0; i < n; i++)
scanf("%d",&v[i]);
init();
MAP();
dijk();
printf("%d %d\n",dis[end],low[end]);
return 0;
}
51nod1459 迷宫游戏的更多相关文章
- 51nod--1459 迷宫游戏 (dijkstra)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可 ...
- c语言迷宫游戏的实现
// // main.c // 迷宫游戏代码实现 // #include <stdio.h> #define ROW 6 //宏定义行 #define COL 6 //宏定义列 /** * ...
- 51nod 1459 迷宫游戏(dij)
题目链接:51nod 1459 迷宫游戏 dij裸题. #include<cstdio> #include<cstring> #include<algorithm> ...
- 用webgl打造自己的3D迷宫游戏
用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam 背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...
- 【Qt编程】3D迷宫游戏
说起迷宫想必大家都很熟悉,个人感觉迷宫对人的方向感是很大的考验,至少我的方向感是不好的,尤其是在三维空间中.由于这段时间帮导师做项目用到了三维作图,便心血来潮想做个三维迷宫玩玩.要想画出三维的迷宫游戏 ...
- 51 NOd 1459 迷宫游戏 (最短路径)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
- 51Nod 1459:迷宫游戏(最短路)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
- 51nod 1459 迷宫游戏 dijkstra模板
链接:迷宫游戏 问题 - 51Nod http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 1459 迷宫游戏 基准 ...
- 51nod1459迷宫问题—(迪杰斯特拉)
1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间, ...
随机推荐
- 将[object Object]转换成json对象
这两天在做中英文双版的文件,页面根据语言读取不同的内容.js模板用的是ejs json文件: "components":{ "pages":{ "ho ...
- [bzoj2091][Poi2010]The Minima Game_动态规划
The Minima Game bzoj-2091 Poi-2010 题目大意:给出N个正整数,AB两个人轮流取数,A先取.每次可以取任意多个数,直到N个数都被取走.每次获得的得分为取的数中的最小值, ...
- codevs——6221 数的统计
6221 数的统计 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 有一个人名字叫A,B总喜欢打他. 这 ...
- java设计模式——单例设计模式
/*设计模式:对问题行之有效的解决方式.其实它是一种思想. 1,单例设计模式. 解决的问题:就是可以保证一个类在内存中的对象唯一性. 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的 ...
- 洛谷 P1065 作业调度方案
P1065 作业调度方案 题目描述 我们现在要利用 mm 台机器加工 nn 个工件,每个工件都有 mm 道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每 ...
- centos下性能分析工具perf的安装和简单使用
1.安装: cat /etc/redhat-releaseCentOS release 6.6 (Final) sudo yum install perf 2.
- Java这样学,Offer随便拿,学习方法和面试经验分享
Java这样学,Offer随便拿,学习方法和面试经验分享 学习中:https://mp.weixin.qq.com/s/iSutLzqCiPMWwm_Rm_2oPw
- 抢占式内核与非抢占式内核中的自旋锁(spinlock)的差别
一.概括 (1)自旋锁适用于SMP系统,UP系统用spinlock是作死. (2)保护模式下禁止内核抢占的方法:1.运行终端服务例程时2.运行软中断和tasklet时3.设置本地CPU计数器preem ...
- Cocos2D-X2.2.3学习笔记12(瞬时动作)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVjYmxvZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- P2P网贷中的4种理財业务模式
线上3种 直投标:线上理財人直接购买借款人的标.平台仅仅是起个"撮合"作用.收点借款人的服务费. 借款人不还钱,有的平台会帮"借款人" ...