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 紧急救援(最短路)的更多相关文章
- LUA中将未分类数据分为测试集和训练集
require 'torch' require 'image' local setting = {parent_root = '/home/pxu/image'} function list_chil ...
- 训练集(train set) 验证集(validation set) 测试集(test set)
转自:http://www.cnblogs.com/xfzhang/archive/2013/05/24/3096412.html 在有监督(supervise)的机器学习中,数据集常被分成2~3个, ...
- 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试
通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...
- 利用VGG19实现火灾分类(附tensorflow代码及训练集)
源码地址 https://github.com/stephen-v/tensorflow_vgg_classify 1. VGG介绍 1.1. VGG模型结构 1.2. VGG19架构 2. 用Ten ...
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习使用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 训练/开发/测试集 对于一个数据集而言,可以将一个数据集分为三个部分,一部分作为训练集,一部分作为简单交叉验证集(dev)有时候也成为验 ...
- 【OCR技术系列之三】大批量生成文字训练集
放假了,终于可以继续可以静下心写一写OCR方面的东西.上次谈到文字的切割,今天打算总结一下我们怎么得到用于训练的文字数据集.如果是想训练一个手写体识别的模型,用一些前人收集好的手写文字集就好了,比如中 ...
- 机器学习在入侵检测方面的应用 - 基于ADFA-LD训练集训练入侵检测判别模型
1. ADFA-LD数据集简介 ADFA-LD数据集是澳大利亚国防学院对外发布的一套主机级入侵检测数据集合,包括Linux和Windows,是一个包含了入侵事件的系统调用syscall序列的数据集(以 ...
- 训练集(train set),验证集(validation set)和测试集(test set)
把数据集分为三部分,分别为:训练集(train set),验证集(validation set)和测试集(test set). 具体比例有各种说法.待补充 测试集是为了测模型泛化能力,不能在训练的时候 ...
- 机器学习基础:(Python)训练集测试集分割与交叉验证
在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...
随机推荐
- django Admin文档生成器
Django的admindocs应用可以从模型.视图.模板标签等地方获得文档内容. 一.概览 要激活admindocs,请按下面的步骤操作: 在INSTALLED_APPS内添加django.cont ...
- StringBuilderWriter 这个类需要commons.io.2.6这个包才可以使用, 在maven仓库中搜
- 《剑指offer》第四十四题(数字序列中某一位的数字)
// 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...
- MySQL学习(十)
要做:商城的留言板 一般情况,做留言板的显示很容易,直接select查询,再显示出来,但eschop中的留言板难点在于留言数据来自2张表,feedback表和comment表,我们需要把两张表中的内容 ...
- ThinkPHP执行原生的SQL语句
执行原生的SQL语句: $sql="insert select update delete...."; ①查询语句: $model对象 -> query($sql); ...
- jdk8新特性:在用Repository实体查询是总是提示要java.util.Optional, 原 Inferred type 'S' for type parameter 'S' is not within its bound;
jdk8新特性:在用Repository实体查询是总是提示要java.util.Optional 在使用springboot 方法报错: Inferred type 'S' for type para ...
- for...in和for...of循环的区别
使用for...in和for...of分别对Array,Set,Map做测试 var a=["A","B","C"]; var b=new ...
- calc_load
http://www.penglixun.com/tech/system/how_to_calc_load_cpu.html #define FSHIFT 11 /* nr of bits of pr ...
- centos6 安装python3.5后pip无法使用的处理
现象:安装pip后发现命令无法识别command not found 原因:which查看找到不到执行路径 find搜索发现安装后存放在/usr/local/python3.5/bin下,于是判断 ...
- Jamie and Tree CodeForces - 916E (换根)
大意: n节点树, 每个点有权值, 三种操作: 1,换根. 2, lca(u,v)的子树权值全部增加x. 3, 查询子树权值和. 先不考虑换根, 考虑子树x加v的贡献 (1)对fa[x]到根的树链贡献 ...