PAT-GPLT训练集 L2-001 紧急救援

题目大意:求最短路的条数,最短路中的权重和的最大值和这条最短路的路线

分析:使用dijkstra算法求出最短路,并且对dijkstra算法进行变化,设起点为s,数量num[MAX_N],权重w[MAX_N],路径path[MAX_N];

   当d[i] > d[k] + es[k][i]时,说明这是一条k到i更短的路,那么这时需要进行操作:num[i] = num[k]; w[i] = w[k] + weight[i]; path[i] = k;

   当d[i] == d[k] + es[k][i]时,说明这又是一条到i结点的最短路,那么num[i] += num[k]; 那么这时需要考虑权重的大小,选择权重和更大的一条最短路,并修改path和权重w

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int INF = ;
const int MAX_N = +;
int es[MAX_N][MAX_N];
int weight[MAX_N];
int d[MAX_N];
bool used[MAX_N];
int path[MAX_N];
int w[MAX_N];
int num[MAX_N];
int V, E, S, D;
void dijkstra() {
fill(d, d + V, INF);
fill(used, used + V, false);
d[S] = ;
num[S] = ;
w[S] = weight[S];
while() {
int k = -;
for(int i = ; i < V; i++) {
if(!used[i] && (k == - || d[k] > d[i])) k = i;
}
if(k == -) break;
used[k] = true;
for(int i = ; i < V; i++) {
if(d[k] + es[k][i] < d[i]) {
d[i] = d[k] + es[k][i];
num[i] = num[k];
path[i] = k;
w[i] = w[k] + weight[i];
}
else if(d[k] + es[k][i] == d[i]) {
num[i] += num[k];
if(w[i] < w[k] + weight[i]) {
w[i] = w[k] + weight[i];
path[i] = k;
}
}
}
}
}
void get_path(int D) {
if(D == S) {
printf("%d", S);
return;
}
get_path(path[D]);
printf(" %d", D);
}
int main() {
cin >> V >> E >> S >> D;
for(int i = ; i < V; i++) {
for(int j = ; j < V; j++) {
es[i][j] = INF;
}
}
for(int i = ; i < V; i++) cin >> weight[i];
int a, b, len;
for(int i = ; i < E; i++) {
cin >> a >> b >> len;
es[a][b] = es[b][a] = len;
}
dijkstra();
printf("%d %d\n", num[D], w[D]);
get_path(D);
return ;
}

PAT-GPLT训练集 L2-001 紧急救援(最短路)的更多相关文章

  1. LUA中将未分类数据分为测试集和训练集

    require 'torch' require 'image' local setting = {parent_root = '/home/pxu/image'} function list_chil ...

  2. 训练集(train set) 验证集(validation set) 测试集(test set)

    转自:http://www.cnblogs.com/xfzhang/archive/2013/05/24/3096412.html 在有监督(supervise)的机器学习中,数据集常被分成2~3个, ...

  3. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

    通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...

  4. 利用VGG19实现火灾分类(附tensorflow代码及训练集)

    源码地址 https://github.com/stephen-v/tensorflow_vgg_classify 1. VGG介绍 1.1. VGG模型结构 1.2. VGG19架构 2. 用Ten ...

  5. [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习使用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 训练/开发/测试集 对于一个数据集而言,可以将一个数据集分为三个部分,一部分作为训练集,一部分作为简单交叉验证集(dev)有时候也成为验 ...

  6. 【OCR技术系列之三】大批量生成文字训练集

    放假了,终于可以继续可以静下心写一写OCR方面的东西.上次谈到文字的切割,今天打算总结一下我们怎么得到用于训练的文字数据集.如果是想训练一个手写体识别的模型,用一些前人收集好的手写文字集就好了,比如中 ...

  7. 机器学习在入侵检测方面的应用 - 基于ADFA-LD训练集训练入侵检测判别模型

    1. ADFA-LD数据集简介 ADFA-LD数据集是澳大利亚国防学院对外发布的一套主机级入侵检测数据集合,包括Linux和Windows,是一个包含了入侵事件的系统调用syscall序列的数据集(以 ...

  8. 训练集(train set),验证集(validation set)和测试集(test set)

    把数据集分为三部分,分别为:训练集(train set),验证集(validation set)和测试集(test set). 具体比例有各种说法.待补充 测试集是为了测模型泛化能力,不能在训练的时候 ...

  9. 机器学习基础:(Python)训练集测试集分割与交叉验证

    在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...

随机推荐

  1. oracle 存储过程给另一个用户的权限问题

    grant execute on (包名)存储过程名称 to 用户名; grant debug on  (包名)存储过程名称 to 用户名 grant select on  存储过程名称 to 用户名 ...

  2. hrbust 2080链表 【贪心】

    仔细看题想想就是个贪心题,两个sort就可以解决了 #include<stdio.h> #include<string.h> #include<math.h> #i ...

  3. Java学习必备书籍推荐终极版!

    Java 基础 <Head First Java>(推荐,豆瓣评分 8.7,1.0K+人评价): 可以说是我的 Java 启蒙书籍了,特别适合新手读当然也适合我们用来温故 Java 知识点 ...

  4. js几个小技巧和坑

    蝴蝶书看了,也知道充满了毒瘤和糟粕,但该用还是得用. 实际写了几天,小技巧记录下来.都是在py里有直接答案,不会遇到的问题,没想到js里这么费事. 还是要多读<ES6标准入门> 1判断ob ...

  5. P678-vect2.cpp

    // CH1608.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string> #include < ...

  6. 定时任务redis锁+自定义lambda优化提取冗余代码

    功能介绍: 我系统中需要跑三个定时任务,由于是多节点部署,为了防止多个节点的定时任务重复执行.所以在定时任务执行时加个锁,抢到锁的节点才能执行定时任务,没有抢到锁的节点就不执行.从而避免了定时任务重复 ...

  7. google浏览器如何导出书签

     首先打开浏览器点右侧的自定义及控制Google chrome.  点击书签-书签管理器   打开书签管理器界面中·   点击书签管理器的整理  最下面的将书签导出到html文件..  弹出另存为对话 ...

  8. python相对目录的基本用法(一)

    一般在代码中涉及到操作文件时,最好使用文件的相对目录,这样在你的程序迁移到别人的电脑时,可以保证不会出现文件读取异常的错误(另外,自动化测试时用例的读取也要用相对目录) 例子1 假如工程文件的目录结构 ...

  9. java8新特性(二)_lambda表达式

    最近一直找java8相关新特性的文章,发现都太没有一个连贯性,毕竟大家写博客肯定都有自己的侧重点,这里找到一本书,专门介绍java8新特性的,感觉大家可以看看<写给大忙人看的JavaSE8> ...

  10. English Voice of <<Dream it passible>>

    Dream It Possible(梦想成为可能) - DelaceyI will run I will climb I will soar.我奔跑,我攀爬 我要飞翔.I'm undefeated我所 ...