Dijkstra算法51NOD1459

51nod 1459 迷宫游戏(迪杰特斯拉Dijkstra算法) 题目: 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开 阅读详情

题意:你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么?
思路:用dijkstra算法找最短路径就行了,但是每一步找路径的时候,如果权值是相同的,那应该走分数比较大的那一条路。

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#define INF 0x3f3f3f
using namespace std;
int map[505][505],v[505],dis[505],n,m,end,stare,score[505],ans[505];
void Dij(int x)
{
    ans[x]=score[x];//ans[i]记录从起始点到i所获的得分
    memset(v, 0, sizeof(v));
    for (int i = 0; i < n; ++i) //更新该结点连的边
    {
        if (map[x][i] < INF)
            ans[i] = ans[x] +score[i];
        dis[i] = map[x][i];
    }
    dis[x] = 0;
    v[x] = 1; //设为已访问
    for (int i = 1; i < n; ++i) //寻找最短路径
    {
        int u = 0, min = INF;
        for (int j = 0; j < n; ++j) //找到距离当前访问的点最近的点
        {
            if (!v[j] && dis[j] < min)
            {
                min = dis[j];
                u = j;
            }
        }
        v[u] = 1; //访问该点
        for (int k = 0; k < n; ++k)  //更新距离和分数
        {
            if (!v[k] && dis[k] > map[u][k] + dis[u])
            {
                dis[k] = map[u][k] + dis[u];
                ans[k] = ans[u] + score[k];
            }
        }
        for (int k = 0; k < n; ++k)
        {
            if (dis[k] == map[u][k] + dis[u])
                ans[k] = max(ans[k], ans[u] + score[k]);//若路程相同,找出得分最大的
        }
    }
    printf("%d %d\n", dis[end], ans[end]);
}   
int main()
{
    int x,y,z;
    scanf("%d%d%d%d",&n,&m,&stare,&end);
    for(int i=0;i<=n;i++)
        for(int j=0;j<=n;j++)
        {
            map[i][j]=INF;
        }
    for(int i=0;i<n;i++)
        scanf("%d",&score[i]);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        map[x][y]=map[y][x]=z;
    }
        Dij(stare);
}
用C++编写的迷宫问题 这是我的一个课程设计,主要是用c++语言写的一个迷宫老鼠问题。。。。 主要的特点就是在DOS环境下实现老鼠的动态移动效果……有兴趣的看看 立即下载

相关推荐

数据结构课程设计C++迷宫代码

此程序是课程设计的源代码,用于数据结构课程设计的源代码,为迷宫代码

最短路径—Dijkstra算法和Floyd算法

注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中...

weixin_33704591的博客 4058

时光轴demo 悬浮日期

时光轴,根据日期分类 有兴趣可以下下看看。看不懂的联系我就行

51Nod1459 迷宫游戏(带权最短路)

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

妍恐龙的博客....^~^眼熟我 754

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

B0505S选型

    使用B0505S-1W已经有一段时间了,一直以来使用的是下面的电路,该电路摘自《CAN总线嵌入式开发——从入门到实战》一书。 参考金升阳的用户手册,手册上写道: 为了确保该模块能够高效可靠的工作,使用时,其输出最小负载不能小于额定负载的10%。若您所需功率确实较小,请在输出端并联一个电阻(电阻消耗功率与实际使用功率之和大于等于10%的额定功率)        由于使用该电源模...

动感小麦兜的博客 1万+

问题 F: 迷宫游戏[dfs]

题目描述 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么? 输入 第一行4个整数n (<=500), m, start, end

qq_43660826的博客 522

DEM边界数值爆炸?用ArcGIS空间分析工具链搞定异常值过滤全流程

本文针对DEM数据处理中常见的边界数值爆炸问题,提供了一套完整的ArcGIS空间分析解决方案。文章深入剖析了异常值产生的根源,并详细介绍了从诊断、定位到使用栅格计算器、重分类等工具进行精准过滤与修复的全流程工作流,帮助用户彻底解决由插值误差、数据拼接及坐标系转换引发的数值异常。

weixin_29269441的博客 148

算法详解之狄克斯特拉算法

上一篇文章,我们了解了广度优先搜索算法(BFS),BFS主要用来解决图的可达路径验证和最小路径问题,即从一个顶点A到另一个顶点B,是否有可达路径,如果有那么求出其到达的最少步骤。那么这里的最短路径就如果加上时间或者其他元素来表示的话,真的就是最短的吗? 这里,我们不妨将达到各个顶点的边加上一个花费时间来修饰,这里用来修饰边的元素,我们称之为权重,加上权重的边即为加权边,如下图所示: 还是上一篇文...

程序员客栈 814

BambuStudio学习笔记:OpenCSG - 实时构造实体几何(CSG)渲染的 OpenGL 方案

**OpenCSG** 是一个基于 **OpenGL** 的 **构造实体几何(CSG)** 实时渲染库,通过 **深度剥离算法** 实现布尔运算(并集、交集、差集)的可视化。其核心目标是简化复杂几何体的交互式建模,适用于 CAD 原型设计、3D 打印预览、教育工具等场景。

zzzkk2009的专栏 929

安卓 实现灯光闪过效果

有个小需求,给按钮加一个灯光划过的效果,这样的需求一般有UI,肯定就找UI了要个gif图不就完事了,可是这次没有,好久自己做一个嘛。Web端的大佬实现很快,到安卓这边呢,百度一搜发现诶?怎么没有,好吧自己来一个 一切动效相关的不给图看都是耍流氓 所以俺不能这么干啊,OK!直接上效果图,再来解释下怎么实现的 效果就是这样子,怎么实现呢? 从图分析下,就是一个光写着重左边移动要右边循环嘛,这有啥难的?? 来看一看我的第一版,第二版 这是个什么?????一点都不像啊? 赶紧再问了问Web端大佬,噢,加了一个

SummerCloudXT的博客 1378

《算法图解》第七章迪克斯特拉学习心得

1、狄克斯特拉算法 (Dijkstra's algorithm) 对于广度优先搜索找出的路径,只适用于图中边的权值都相同的情况,如果权值不相同,可能找出的未必是最短路径。如图:对于不同权值的图,我们使用狄克斯特拉算法寻找最短路径,该算法包含以下四个步骤:找出“最便宜”的节点, 即可在最短时间内到达的节点。更新该节点的邻居的开销, 其含义将稍后介绍。重复这个过程, 直到对图中的每个节点都这样做了。计...

sysu63的博客 3119

扣子(Coze)实战:自动化拆解抖音对标账号,输出完整报告(附源码下载)

本文要分享的工作流,可以实现对标账号的拆解与分析,最后输出一份完整的分析报告,报告中包含有账号基本信息、账号定位、人设设计、选题方向、内容结构、变现路径以及优化建议等。

MCC_MCC_MCC的博客 2827

51nod 1459 迷宫游戏(dij)

题目链接:51nod 1459 迷宫游戏 dij裸题。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #define CLR(a,b) mem...

dhe56357的博客 248

实现labelme批量json_to_dataset方法

labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_dataset.exe C:\Users\Administrator\Desktop\total\1.json(路径),但是这个过程需要我们一个json文件的生成,过程很慢。 一、打开abelm...

简简单单 5万+

使用 IMDb API 获取电影评分和评论的 Python 爬虫

电影是人们娱乐生活中的重要组成部分,随着电影产业的快速发展,观众对电影的评价也越来越多样化。IMDb(互联网电影数据库)作为全球最大的电影评分和评论平台之一,收录了成千上万部电影、电视节目及其相关数据。它提供了一个强大的 API 接口,允许开发者访问电影的评分、评论、演员信息等数据。本文将带你一步一步实现一个 Python 爬虫,使用 IMDb API 获取电影的评分和评论。我们将通过这个爬虫来分析一些热门电影的观众反馈,并可视化分析结果。

2201_76125261的博客 1055

51nod 1459迷宫游戏 Dijkstra堆优化

51nod  1459迷宫游戏  Dijkstra堆优化 题目链接:51nod  1459迷宫游戏 题意:给定源点和终点, 每经过一个点就会得到该点对应的分数, 每走过一条边,就会增加相应的时间,让你求源点到终点的最短时间以及在该最短时间下的最终最大得分。 分析: 依旧还是带权单源点最短路。还是用d[i].first表示从源点到i点的路径长度,用d[i].second表示从源点到i点的得

Fighting! 897

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

51Nod - 1459 迷宫游戏 dijkstra拓展

/* * 51Nod 1459 迷宫游戏 dijkstra拓展 */ package p01; import java.io.*; import java.util.Scanner; public class t1 { static int[] grade; static int[][] graph; static final int INFINITY = 1<

PeersLee的博客 1401

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

题目链接 中文题,迪杰斯特拉最短路径算法模板题。 #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f int visit[510],vis[510],map[510][510],low[510],a[510]; int n,m,start,end; void dijkstra() {...

weixin_30325071的博客 224

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

迷宫游戏 51Nod - 1459 【最短路变形】

迷宫游戏 51Nod - 1459 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息

lzs_lazy 377

51nod 1459 迷宫游戏 最短路径dijkstra

题目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1459 思路:使用dijkstra算法 把start作为开始节点,输出end节点即可 #include <cstdio> #include <cstring> #include <iostream> using namespace ...

霖的博客 280

51nod 1459 迷宫游戏 dijkstra变形

51nod 的迷宫问题 其实是dijkstra算法的变形 我们在松弛操作的时候 对于cost值相同的节点 我们需要重新计算一下value值 然后取最大; 用归纳法证明这个问题 : 首先我们先假设 可以到达 k 点的并且到达时间最短的所有点 a1 a2 。。。。。 an(类似的 这些点已经有了cost最小的时候value最大的性质)  对于每一个点 我们在进行松弛操作的时候 必然会对 a

beating_spark 333

51Nod 1459 迷宫游戏 dijkstra拓展

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

' 泪 添 无 言's blog 1927

51nod 1459 迷宫游戏Dijkstra变形

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

逝水流年轻染尘 778

51Nod 1459:迷宫游戏(Dijkstra)

题目链接 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提...

818

51Nod 1459 迷宫游戏 (dijkstra)

51Nod 1459 在Dijkstra的基础上加了一点东西,考察对Dijkstra算法理解的程度。还是要加深理解啊。 #include #include #include #include #include using namespace std; const int inf = 0x3f3f3f3f; int map[550][550]; int vis[550]

Benjamin_Z的博客 759
上一篇: 拓扑排序hdu1285
下一篇: 树状数组hdu1541
UKey_
博客等级 码龄10年 258粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值