题意:给你包含n个点的连通图,每个点都有一个权值。给定起点和终点。问你起点到终点的最短路条数,并且输出路径最短且权值之和最大的一条路径。

思路:1.如何根据父节点更新子节点。x,y是父子节点。如果从起点s到父节点x的最短路条数为cnt,则从起点到y的最短路条数也为cnt。如果更新某个点最短路条数的时候,发现这个点原来的最短路条数相同的话就要,再原来最短路条数的基础上再加上这次最短路的条数。

2.如何更新从起点到某个点的权值路径的权值之和:如果从起点到父节点x的权值之和为w,则从起点到y的权值之和为w加上y节点的自身的权值之和。

3.L2第一题和L2 26题有一些相同的之处,都是由父节点更新子节点。比如26题父节点的辈分如果是2则子节点的辈分就是在2+1.下面上第一题代码。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<stack>
  5. #include<cmath>
  6. #define inf 0x3f3f3f3f
  7. using namespace std;
  8.  
  9. int f[],ans[];//ans数组记录起点到每个点得救援队数量
  10. int w[],a[][];
  11. int v[],d[],fa[];//fa数组记录父亲节点
  12. stack<int> s;
  13. int N,M,S,D,k=;
  14.  
  15. void dijkstra()
  16. {
  17. memset(d,0x3f,sizeof d);
  18. memset(v,,sizeof v);
  19. d[S]=;
  20. f[S]=;
  21. ans[S]=w[S];
  22. for(int i=;i<N;i++)
  23. {
  24. int x,m=inf;
  25. for(int j=;j<N;j++)
  26. {
  27. if(!v[j]&&d[j]<m)
  28. {
  29. m=d[j];
  30. x=j;
  31. }
  32. }
  33. v[x]=;
  34. for(int y=;y<N;y++)
  35. {
  36. if(d[y]>d[x]+a[x][y])
  37. {
  38. f[y]=f[x];//最短路条数
  39. d[y]=d[x]+a[x][y];
  40. fa[y]=x;
  41. ans[y]=ans[x]+w[y];
  42. }
  43. else if(d[y]==d[x]+a[x][y])
  44. {
  45. f[y]+=f[x];
  46. if(ans[y]<ans[x]+w[y])
  47. {
  48. fa[y]=x;
  49. ans[y]=ans[x]+w[y];
  50. }
  51. }
  52. }
  53. }
  54.  
  55. }
  56.  
  57. int main()
  58. {
  59. scanf("%d%d%d%d",&N,&M,&S,&D);
  60. for(int i=;i<N;i++)
  61. {
  62. scanf("%d",&w[i]);
  63. }
  64.  
  65. memset(a,0x3f,sizeof a);
  66. for(int i=;i<;i++)
  67. fa[i]=-;
  68. int x,y,z;
  69. for(int i=;i<M;i++)
  70. {
  71. cin>>x>>y>>z;
  72. a[x][y]=z;
  73. a[y][x]=z;
  74. dijkstra();
  75. printf("%d %d\n",f[D],ans[D]);
  76. s.push(D);
  77. for(int i=fa[D];i!=-;i=fa[i])
  78. {
  79. s.push(i);
  80. }
  81.  
  82. printf("%d",s.top());
  83. s.pop();
  84. while(!s.empty())
  85. {
  86. printf(" %d",s.top());
  87. s.pop();
  88. }
  89.  
  90. return ;
  91. }

dijkstral改编的更多相关文章

  1. 【转】监听按钮除OnClick外其他事件的方法,附简易改编的UIButton类

    http://lib.csdn.net/article/unity3d/38463 作者:IceFantasyLcj 大家好,我是雨中祈雨.一直以来,CSDN都是我最好的编程助手.这是我在CSDN的第 ...

  2. 【转】 NGUI 监听按钮除OnClick外其他事件的方法,附简易改编的UIButton类

    http://blog.csdn.net/icefantasylcj/article/details/49450555 大家好,我是雨中祈雨.一直以来,CSDN都是我最好的编程助手.这是我在CSDN的 ...

  3. NOIP2014无线网络发射器选址改编1

    问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...

  4. APK改之理 手游修改改编安卓程序工具安装使用教程

    APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如 ...

  5. C语言 · 8皇后问题改编

    8皇后问题(改编) 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 ...

  6. luogu p3371 单源最短路径(dijkstral

    本来我写的对的 我就多手写了个 ios::sync_with_stdio(false); 我程序里面用了cin 还有scanf 本来想偷偷懒 我就说 我查了半天错 根本找不到的啊... 后来交了几次 ...

  7. 2017Facebook面试题改编“一面砖墙 ”

    题目:一面砖墙 这道题改编自网上Facebook去年的一道面试题,是hihoCoder的1494题(https://hihocoder.com/problemset/problem/1494) 这道题 ...

  8. Atcoder Regular Contest 092 A 的改编

    原题地址 题目大意 给定平面上的 $n$ 个点 $p_1, \dots, p_n$ .第 $i$ 点的坐标为 $(x_i, y_i)$ .$x_i$ 各不相同,$y_i$ 也各不相同.若两点 $p_i ...

  9. Cocos2d-x 3.1 一步一步地做改编

    本文并不想谈论的屏幕改编或真理的概念.假设不知道cocos2d-x的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/8451.ht ...

随机推荐

  1. HTML中的清除浮动的常用方法(转载)

    以下面的div为例: HTML: <div class="test"> <div class="test1"></div> ...

  2. C++ 中文拼音排序方法。

    参考文档:http://zisxks.com/2013/10/25/sort-Chinese-characters-in-cpp/ 采用locate.注意事项:排序的名字,如果出现某一个人,出现在顶上 ...

  3. elk-(七)

    最终架构确定为  logs--->blieb--->redis/kafka--->logstash--->es--->kibana 注意:  geoip下载地址: wge ...

  4. vue2.0 源码解读(一)

    又看完一遍中文社区的教程接下来开始做vue2.0的源码解读了! 注:解读源码时一定要配合vue2.0的生命周期和API文档一起看 vue2.0的生命周期分为4主要个过程 create. 创建---实例 ...

  5. Mybatis连接配置文件详解

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC &q ...

  6. windows环境下MySQL mysql-5.7.17-winx64 (社区服务版,community server)安装教程

    根据网上查询的资料显示,MySQ在版本5.7开始根目录下没有dada目录,需要额外的“初始化数据库”的操作自动生成data目录. 1.    下载地址: https://cdn.mysql.com// ...

  7. SQL Server 索引自动组织维护

    公司的一个产品中的数据库,几个热点表因为主键和索引设计不合理,造成索引碎片过大,影响性能. 我尝试新建了一个索引碎片整理的定时任务,用于维护索引锁片和统计信息. 具体的过程如下: 本文原创,转发请表明 ...

  8. XSS笔记

    XSS测试代码: <img src="javascript:alert(/xss/)"> <script src=http://evil.com/xss.js&g ...

  9. Grafana 安装及 Windows 应用程序服务配置工具 NSSM使用

    网址:https://blog.csdn.net/kk185800961/article/details/83515382 1.进入conf文件,将 defaults.ini 复制一份,命名为cust ...

  10. java框架之Spring(2)-注解配置IOC&AOP配置

    注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...