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

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

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

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

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<cmath>
#define inf 0x3f3f3f3f
using namespace std; int f[],ans[];//ans数组记录起点到每个点得救援队数量
int w[],a[][];
int v[],d[],fa[];//fa数组记录父亲节点
stack<int> s;
int N,M,S,D,k=; void dijkstra()
{
memset(d,0x3f,sizeof d);
memset(v,,sizeof v);
d[S]=;
f[S]=;
ans[S]=w[S];
for(int i=;i<N;i++)
{
int x,m=inf;
for(int j=;j<N;j++)
{
if(!v[j]&&d[j]<m)
{
m=d[j];
x=j;
}
}
v[x]=;
for(int y=;y<N;y++)
{
if(d[y]>d[x]+a[x][y])
{
f[y]=f[x];//最短路条数
d[y]=d[x]+a[x][y];
fa[y]=x;
ans[y]=ans[x]+w[y];
}
else if(d[y]==d[x]+a[x][y])
{
f[y]+=f[x];
if(ans[y]<ans[x]+w[y])
{
fa[y]=x;
ans[y]=ans[x]+w[y];
}
}
}
} } int main()
{
scanf("%d%d%d%d",&N,&M,&S,&D);
for(int i=;i<N;i++)
{
scanf("%d",&w[i]);
} memset(a,0x3f,sizeof a);
for(int i=;i<;i++)
fa[i]=-;
int x,y,z;
for(int i=;i<M;i++)
{
cin>>x>>y>>z;
a[x][y]=z;
a[y][x]=z;
dijkstra();
printf("%d %d\n",f[D],ans[D]);
s.push(D);
for(int i=fa[D];i!=-;i=fa[i])
{
s.push(i);
} printf("%d",s.top());
s.pop();
while(!s.empty())
{
printf(" %d",s.top());
s.pop();
} return ;
}

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. Java课程寒假之开发记账本软件(网页版)之二

    一.实现基础功能之一(记账) 一个记账本最基础之一的功能就是记账,所以也是首先要解决的问题,我选择了上学期使用的MySQL数据库来对账本进行存储. 我选择记账的方法是分开记账,就是支出放在一个表,收入 ...

  2. git 设置tracking information

    There is no tracking information for the current branch.Please specify which branch you want to merg ...

  3. STL算法总览(部分)

    下图将所有的STL算法(以及一些非标准的SGI STL算法)的名称.用途.文件分布等等,依算法名称的字母顺序列表.表格中凡是不在STL标准规格之内的SGI专属算法,都以 * 加以表示. 注:以下“质变 ...

  4. PHP面试大全 基础篇100道问题

    2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...

  5. Spring Boot事务管理(中)

    在上一篇 Spring Boot事务管理(上)的基础上介绍Spring Boot事务属性和事务回滚规则 . 4 Spring Boot事务属性 什么是事务属性呢?事务属性可以理解成事务的一些基本配置, ...

  6. WebDriver与文件系统

    1.屏幕截屏操作:其接口函数是TakesScreenshot.该功能是在运行测试用例的过程中,需要验证某个元素的状态或者显示的数值时,可以将屏幕截取下来进行对比:或者在异常或者错误发生的时候将屏幕截取 ...

  7. GIL学习

    GIL锁 一.GIL的简单概述 二.GIL对于多线程的影响 三.解决GIL对于多线程影响的方案 回到顶部 一.GIL的简单概述 1.概念 GIL ( Global Interperter Lock ) ...

  8. mysql /tmp目录爆满问题的处理

    mysql /tmp目录爆满问题的处理 突然收到zabbix告警,说mysql服务器的/目录磁盘空间不足. 登录到服务器,看了下发现100GB的根目录,居然使用了差不多90GB.这台服务器上只跑了一个 ...

  9. ZooKeeper之service discovery

    Zookeeper整体介绍 ZooKeeper is a centralized service for maintaining configuration information, naming, ...

  10. 家庭记账本之微信小程序(五)

    wxml的学习 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. 用以下一些简单的例子来看看WXML具有什么能力: 数据 ...