链接:https://www.nowcoder.com/questionTerminal/a7052c5bd8634edb9ccee711a5c1ea54
来源:牛客网

短最优升级路径

题目描述:游戏网站提供若干升级补丁,每个补丁大小不一,玩家要升级到最新版,如何选择下载哪些补丁下载量最小。

输入:

第一行输入

第一个数为用户版本 第二个数为最新版本,空格分开

接着输入N行补丁数据

第一个数补丁开始版本 第二个数为补丁结束版本 第三个数为补丁大小,空格分开

输出:

对于每个测试实例,输出一个升级路径以及最后实际升级的大小

样例输入:

1000 1050

1000 1020 50

1000 1030 70

1020 1030 15

1020 1040 30

1030 1050 40

1040 1050 20

样例输出:

1000->1020->1040->1050(100)

迪杰斯特拉最短路径算法 建立邻接矩阵,标识版本间的来去路线,求最初版本到最末版本之间的最短路径。

在dijkstra算法模板的基础上加上一个pre数组,用于记录该节点的上一个节点,即该点是经过哪一点才到达该点的。pre数组具体在边松弛的过程中进行重新赋值,松弛成功就将pre值记录k点,及该点是由起点经过k点后所得到的。最后把pre数组中的值递归输出一遍即可。

#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=10000;
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f
map<int,int> mp,rmp;
int road[maxn][maxn];
int dis[maxn];
bool vis[maxn];
int pre[maxn];
int n;void dijkstra(int s,int e)
{//s为起点,e为终点memset(vis, false, sizeof(vis));//标记是否求出最短路径vis[s] = true;//标记起点到这一点的最小距离已经求出for(int i = 1; i < n; i++){dis[i] = road[s][i];//初始化起点到每一个点的距离pre[i]=s;//初始化路径,每个点的上一个点为起点}for(int u = 1; u < n-1; u++){int minD =inf ,k = -1;for(int i = 1; i< n; i++){   //寻找没有访问过的最短路if(!vis[i]&&dis[i]<minD){k = i;//记录下标minD = dis[i];//记录最小值}}if(k==e)    break;vis[k] = true;//标记已经访问过//松弛操作for(int i = 1; i< n; i++){if(!vis[i]&&dis[k]+road[k][i]<dis[i]){dis[i]=dis[k]+road[k][i];pre[i]=k;}//if}//for}
}void print(int cur){if(cur==1){printf("%d",rmp[cur]);return ;}print(pre[cur]);printf("->%d",rmp[cur]);
}int main(){int start,end;n=1;scanf("%d%d",&start,&end);rmp.clear();mp.clear();mp[start]=n;rmp[n]=start;n++;mp[end]=n;rmp[n]=end;n++;int N=(end-start)/10;memset(road,INF,sizeof road);for(int i=0;i<=N;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);if(!mp[u]) {mp[u]=n;rmp[n]=u;n++;}if(!mp[v]) {mp[v]=n;rmp[n]=v;n++;}road[mp[u]][mp[v]]=road[mp[v]][mp[u]]=min(road[mp[v]][mp[u]],w);}for(int i=1;i<n;i++){for(int j=1;j<n;j++)printf("%d  ",road[i][j]==INF?-1:road[i][j]);printf("\n");}dijkstra(mp[start],mp[end]);if(dis[mp[end]]==INF)printf("-1");else{print(mp[end]);printf("(%d)\n",dis[mp[end]]);}return 0;
}

牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】相关推荐

  1. 牛客网 精品课程 《直通BAT面试算法精讲课》 优惠码立减10元

    牛客网 精品课程 <直通BAT面试算法精讲课> 优惠码 专属优惠码为:AszaxMb 或者直接打开专属优惠购课链接: http://www.nowcoder.com/courses/1?c ...

  2. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  3. 牛客网校招题题目收集----数据结构与算法篇

    选择题 a,b,c,d,e 对应出现的频率为4,6,11,13,15:以下符合哈夫曼编码的选项是?() A. a=000.b=01.c=001.d=10.e=11 B. a=000.b=001.c=0 ...

  4. 牛客网 华为机试题 数据重复的筛选问题记录

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 保证输入的整数最后一位不是0. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个 ...

  5. 牛客网网易机试模拟题(Android)记录

    1.关于http协议以下说法不正确的是: A 1.304表示临时重定向 B 2.range请求响应一定是用http状态码206表示成功 C 3.http的header分割符是\r D 4.请求参数如果 ...

  6. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取

    牛客网--字节跳动面试题--特征提取 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:特征提取 来源:牛客网 题目 ...

  7. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)...

    链接:https://ac.nowcoder.com/acm/contest/558/D 来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每 ...

  8. 牛客网音短视频类sql-4

    牛客网-- 面试某音短视频 SQL 4 每个创作者每月的涨粉率及截止当前的总粉丝量 问题:计算2021年里每个创作者每月的涨粉率及截止当月的总粉丝量 注:涨粉率=(加粉量 - 掉粉量) / 播放量.结 ...

  9. 牛客网算法题 (一) 办公室路径条数解法 Shopee的办公室(二)

    办公室路径走法 题目描述 shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样 ...

最新文章

  1. Python 函数的可变参数(*paramter与**paramter)的使用
  2. BestCoder Round #80 1002
  3. python 魔法参数*argv 和 **kw
  4. centos7 ifconfig命令找不到_分享一个解决 sudo 命令找不到环境变量的小技巧
  5. 服务器write后客户端响应,客户端解析服务器响应的multipart/form-data数据
  6. 分布式与人工智能课程(part3)--第三课
  7. 用html5做一条线,使用HTML5 canvas绘制线条的方法
  8. CCF201803-1 跳一跳
  9. java rx_史上最浅显易懂的RxJava入门教程
  10. jQuery动画效果之上卷下拉
  11. spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别
  12. sicily 1282. Computer Game
  13. urlencode编码基本概念_URLencode编码简析
  14. VISIO输出黑白色电路图
  15. 计算机管理员英语怎么说,电脑管理员英文administrator写法
  16. 电商分账系统好与坏的3个判断标准
  17. Flutter2 的 Sound null safety ?!以及发布pub上面的null safety标签实现
  18. Webstorm 2019激活码(有效期至2020年6月)
  19. 系统平台补流量会影响店铺吗?
  20. 3ds Max(三维动画制作软件)V2020 x64 中文版

热门文章

  1. webpack配置es6开发环境
  2. Python连接SQL Server数据库 - pymssql使用基础
  3. 压力测试+webbench+ab+tsung+siege
  4. 语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
  5. python实现排序算法_python实现各种排序算法
  6. 基于modbus协议的工业自动化网络规范_工控学堂:解读Modbus通讯协议「宜收藏」...
  7. [设计模式笔记]3.单例模式
  8. servlrt程序的入口点是_刚刚,微信偷偷更新,小程序又放大招了!
  9. 哪个相机可以拍gif动图_直接拍摄gif动图的手机app你见过吗
  10. mysql数据库安全配置文件_MySQL数据库安全配置