当前位置: 首页 > news >正文

PTA 道路管制

乌拉乌拉国有n个城市和m条道路,城市编号为1∼n。由于乌拉乌拉国每一个城市都在创城(创建文明城市),因此,城市之间的道路通行施行道路交通管制:
 已知从城市ui​到城市vi​的道路,需要时间ti​。但是一旦当道路管理员进入某条道路后,任何人在道路管理员未驶出该道路前不允许进入该道路。例如:道路管理员在第4时刻进入该道路,在路上需要花费3时,那么在第4∼6时刻不允许其他人进入改街道,只能第7时刻及其以后进入或者在第4时刻之前进入。
 现在,计算鸭知道,道路管理员从0时刻出发,依次经过g个城市,计算鸭从时刻k出发,从城市a前往城市b。请问,计算鸭最少需要多长时间。

输入格式:

输入的第一行给出两个整数n,m——表示城市的数量和道路的数量。

输入的第二行给出四个整数a,b,k,g——a,b分别表示计算鸭的初始城市和目的城市;k表示计算鸭出发时刻;g表示道路管理员需要经过的城市数量。

输入的第三行给出g个整数xi​——表示道路管理员需要经过的城市编号。

接下来m行,每行3个整数ui​,vi​,ti​——表示从ui​至vi​需要用时ti​

2≤n≤103

2≤m≤104

1≤a,b,ui​,vi​≤n

0≤k,g≤103

1≤ti​≤103

输出格式:

输出一个整数——表示计算鸭从a城市到b城市的最短用时。

输入样例:

6 5
1 6 20 4
5 3 2 4
1 2 2
2 3 8
2 4 3
3 6 10
3 5 15 

输出样例:

21

输入样例:

8 9
1 5 5 5
1 2 3 4 5
1 2 8
2 7 4
2 3 10
6 7 40
3 6 5
6 8 3
4 8 4
4 5 5
3 4 23 

输出样例:

40

思路: 

定义一个mp[N][N]数组记录每条道路的长度;

    for(int i = 1 ; i <= m ; i ++){ll u , v , w;cin >> u >> v >> w;add(u,v,w) , add(v,u,w);mp[u][v] = mp[v][u] = w;}

一个tle[N][N][2]数组记录道路的禁止进入的开始和结束时间,now为当前的时间。

比如3->5的花费是15,那么禁行时间为0->14,接下来3->28,禁行时间为15->22

    for(int i = 0 ; i < g - 1; i ++){tle[gl[i]][gl[i+1]][0] = tle[gl[i+1]][gl[i]][0] = now;now += mp[gl[i]][gl[i+1]] - 1;tle[gl[i]][gl[i+1]][1] = tle[gl[i+1]][gl[i]][1] = now;now ++ ;}

 记录鸭要从k时压入队列进行做短路。

如果当前点的时间花费在不能走当前想走的道路的禁行时间内,那么只能在禁行时间后开始走。

若不在禁行时间内,则直接进行普通最短路。

    if(dist[t] >= tle[t][x][0] && dist[t] <= tle[t][x][1]){if(dist[x] <= tle[t][x][1] + 1 + w[i])continue;dist[x] = tle[t][x][1] + 1 + w[i];q.push({dist[x],x});}else{if(dist[x] <= dist[t] + w[i])continue  ;dist[x] = dist[t] + w[i];q.push({dist[x],x}); }

 总代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n , m , T ;
const int N = 1005 , M = 20005;
int e[M] , ne[M] , w[M] , dist[N] , h[N] , idx;
bool st[N];
void add(int a,int b,int c){ne[idx] = h[a] , e[idx] = b , w[idx] = c , h[a] = idx ++;
}
#define pii pair<int,int>
ll tle[N][N][2];
void bfs(int a,int b,int k){memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);priority_queue<pii,vector<pii>,greater<pii> >q;dist[a] = k;q.push({dist[a],a});while(!q.empty()){auto t = q.top().second;q.pop();if(st[t])continue ;st[t] = 1;for(int i = h[t] ; ~ i ; i = ne[i]){int x = e[i];if(dist[t] >= tle[t][x][0] && dist[t] <= tle[t][x][1]){if(dist[x] <= tle[t][x][1] + 1 + w[i])continue;dist[x] = tle[t][x][1] + 1 + w[i];q.push({dist[x],x});}else{if(dist[x] <= dist[t] + w[i])continue  ;dist[x] = dist[t] + w[i];q.push({dist[x],x}); }}}cout << dist[b] - k << endl;
}
ll mp[N][N] , gl[N];
int main(){idx = 0;memset(h , -1,sizeof h);cin >> n >> m;ll a , b , k , g;cin >> a >> b >> k >> g;for(int i = 0 ; i < g ; i ++){cin >> gl[i];}ll cnt = 0 , now = 0;for(int i = 1 ; i <= m ; i ++){ll u , v , w;cin >> u >> v >> w;add(u,v,w) , add(v,u,w);mp[u][v] = mp[v][u] = w;}for(int i = 0 ; i < g - 1; i ++){tle[gl[i]][gl[i+1]][0] = tle[gl[i+1]][gl[i]][0] = now;now += mp[gl[i]][gl[i+1]] - 1;tle[gl[i]][gl[i+1]][1] = tle[gl[i+1]][gl[i]][1] = now;now ++ ;}bfs(a,b,k);
}

相关文章:

PTA 道路管制

乌拉乌拉国有n个城市和m条道路&#xff0c;城市编号为1∼n。由于乌拉乌拉国每一个城市都在创城&#xff08;创建文明城市&#xff09;&#xff0c;因此&#xff0c;城市之间的道路通行施行道路交通管制&#xff1a; 已知从城市ui​到城市vi​的道路&#xff0c;需要时间ti​。…...

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好&#xff0c;我是淘小白~ 首先&#xff0c;感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新&#xff0c;此次版本更新修改增加了一些内容&#xff1a; 1、自定义多条指令&#xff0c;软件自动判断指令条数&#xff0c;进行输入 2、增加谷歌浏览多账号轮询&#xf…...

【WPF应用7】 基本控件-Grid 布局的详解与示例

引言 WPF&#xff08;Windows Presentation Foundation&#xff09;是.NET框架的一部分&#xff0c;它提供了一个用于创建桌面应用程序用户界面的框架。在WPF中&#xff0c;Grid布局是一个非常强大的布局工具&#xff0c;它允许开发者创建复杂的、响应迅速的用户界面布局。Grid…...

flink-connector-redis支持select查询

EN 1 项目介绍 基于bahir-flink二次开发&#xff0c;相对bahir调整的内容有&#xff1a; 1.使用Lettuce替换Jedis,同步读写改为异步读写&#xff0c;大幅度提升了性能 2.增加了Table/SQL API&#xff0c;增加select/维表join查询支持 3.增加关联查询缓存(支持增量与全量) 4…...

[密码学] 密码学基础

目录 一 为什么要加密? 二 常见的密码算法 三 密钥 四 密码学常识 五 密码信息威胁 六 凯撒密码 一 为什么要加密? 在互联网的通信中&#xff0c;数据是通过很多计算机或者通信设备相互转发&#xff0c;才能够到达目的地,所以在这个转发的过程中&#xff0c;如果通信包…...

上海:6月1日起取消企业复工复产白名单制

财经新闻5月29日消息&#xff1a;上海市人民政府关于印发《上海市加快经济恢复振兴行动计划》的通知。 《方案》包括千方百计缓解各类市场主体困难&#xff0c;全面有序推进复工复产和市场复工复产&#xff0c;多措并举稳外资稳外贸&#xff0c;大力促进消费加速复苏&#xff0…...

SpringBoot扩展篇:循环依赖源码链路

SpringBoot扩展篇&#xff1a;循环依赖源码链路 1. 相关文章2. 一个简单的Demo3. 流程图3.1 BeanDefinition的注册3.2 开始创建Bean3.3 从三级缓存获取Bean3.4 创建Bean3.5 实例化Bean3.6 添加三级缓存3.7 属性初始化3.8 B的创建过程3.9 最终流程 1. 相关文章 SpringBoot 源码…...

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…...

uni-app纵向步骤条

分享一下项目中自封装的步骤条&#xff0c;存个档~ 1. 话不多说&#xff0c;先看效果 2. 话还不多说&#xff0c;上代码 <template><!-- 获取一个数组&#xff0c;结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…...

【JavaEE -- 文件操作IO有关面试题】

文件操作IO有关面试题 1.查找硬盘上的文件位置1.1 思路1.2 执行代码 2. 实现文件复制2.1 思路2.2 代码执行 3. 打印搜索的词的文件路径3.1 思路3.2 代码执行 1.查找硬盘上的文件位置 给定一个文件名&#xff0c;去指定的目录中进行搜索&#xff0c;找到文件名匹配的结果&#…...

Open WebUI大模型对话平台-适配Ollama

什么是Open WebUI Open WebUI是一种可扩展、功能丰富、用户友好的大模型对话平台&#xff0c;旨在完全离线运行。它支持各种LLM运行程序&#xff0c;包括与Ollama和Openai兼容的API。 功能 直观的界面:我们的聊天界面灵感来自ChatGPT&#xff0c;确保了用户友好的体验。响应…...

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题&#xff0c;即使是非zookeeper的节点&#xff0c;或者是非集群内部节点&#xff0c;也可以通过nc扫描2181端口&#xff0c;获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述&#xff1a;CVE-2018-8012: A…...

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…...

数据库底层原理

本文将介绍数据库在储存和通讯时的原理 数据库储存 首先&#xff0c;数据库的作用持久化存储数据&#xff0c;数据库的存储形式就是文件&#xff0c;每一张表就是一个文件&#xff0c;其他数据也是文件形式&#xff0c;比如索引文件。 比如像mysql数据库&#xff0c;其中的数…...

JVM虚拟机-实战篇

专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 目录 一、内存溢出和内存泄漏 什么是内存泄漏? 二、解决内存泄漏 解决内存泄漏的思路 top命令 发现问题 VisualVM 发现问…...

上岸跨考生的备考经验,送给零基础跨考计算机的你!

九个月的时间绝对是够用的&#xff0c;就算是跨考也够用&#xff01; 一般来说&#xff0c;专业课要复习三轮&#xff0c;九个月的时间&#xff0c;复习三轮完全够用 复习资料&#xff1a;王道四本书王道真题 打基础阶段&#xff1a;3-6月&#xff1a; 学习目标&#xff1a…...

js改变图片曝光度(高亮度)

方法一&#xff1a; 原理&#xff1a; 使用canvas进行滤镜操作&#xff0c;通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg&#xff0c;而不是canvas 调整出来的效果不是很好&#xff0c;图片不是高亮&#xff0c;而是有些发白 效果 代码 …...

【NLP笔记】大模型prompt推理(提问)技巧

文章目录 prompt概述推理&#xff08;提问&#xff09;技巧基础prompt构造技巧进阶优化技巧prompt自动优化 参考链接&#xff1a; Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing预训练、提示和预测&#xff1a;NL…...

【目标检测】西红柿成熟度数据集三类标签原始数据集280张

文末有分享链接 标签名称names: - unripe - semi-ripe - fully-ripe D00399-西红柿成熟度数据集三类标签原始数据集280张...

Java File类(文件操作类)

背景&#xff1a; 在Java编程语言中&#xff0c;操作文件和目录是一项常见的任务。而File类&#xff0c;则是java.io包中的重要类&#xff0c;它是唯一代表磁盘文件本身的对象。通过File类提供的方法&#xff0c;我们可以轻松地创建、删除、重命名文件和目录等操作。 构造方法&…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...