货车运输(树)

[NOIP2013 提高组] 货车运输

题目背景

NOIP2013 提高组 D1T3

题目描述

A 国有 n n n 座城市,编号从 1 1 1 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。

现在有 q q q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。

输入格式

第一行有两个用一个空格隔开的整数 $ n,m$,表示 A 国有 $ n$ 座城市和 m m m 条道路。

接下来 m m m 行每行三个整数 x , y , z x, y, z x,y,z,每两个整数之间用一个空格隔开,表示从 $x $ 号城市到 $ y $ 号城市有一条限重为 z z z 的道路。
注意: x ≠ y x \neq y x=y,两座城市之间可能有多条道路 。

接下来一行有一个整数 q q q,表示有 q q q 辆货车需要运货。

接下来 q q q 行,每行两个整数 x , y x,y x,y,之间用一个空格隔开,表示一辆货车需要从 x x x 城市运输货物到 y y y 城市,保证 x ≠ y x \neq y x=y

输出格式

共有 q q q 行,每行一个整数,表示对于每一辆货车,它的最大载重是多少。
如果货车不能到达目的地,输出 − 1 -1 1

样例 #1

样例输入 #1

4 3
1 2 4
2 3 3
3 1 1
3
1 3
1 4
1 3

样例输出 #1

3
-1
3

提示

对于 30 % 30\% 30% 的数据, 1 ≤ n < 1000 1 \le n < 1000 1n<1000 1 ≤ m < 10 , 000 1 \le m < 10,000 1m<10,000 1 ≤ q < 1000 1\le q< 1000 1q<1000

对于 60 % 60\% 60% 的数据, 1 ≤ n < 1000 1 \le n < 1000 1n<1000 1 ≤ m < 5 × 1 0 4 1 \le m < 5\times 10^4 1m<5×104 1 ≤ q < 1000 1 \le q< 1000 1q<1000

对于 100 % 100\% 100% 的数据, 1 ≤ n < 1 0 4 1 \le n < 10^4 1n<104 1 ≤ m < 5 × 1 0 4 1 \le m < 5\times 10^4 1m<5×104,$1 \le q< 3\times 10^4 $, 0 ≤ z ≤ 1 0 5 0 \le z \le 10^5 0z105

整体思路

因为最后所要输出的答案是每一辆货车的最大载重,那么假设这辆货车是在某一条道路上,那么这个最大载重便是从中间众多的道路上最大限重最小的一条,由此分析我们可得到这个背景下的核心问题:求两点之间所有路径的最小边长的最大值!!!
根据上述思路,可以考虑采用并查集的方法
具体见代码注释

涉及到的知识点

1.并查集2.树

完整代码

#include<bits/stdc++.h>
using namespace std;
int n,m,q;
set<int>::iterator it;
const int maxm = 50005;
const int maxn = 11111;
set<int> Q[11111];
struct edge{int u,v,cost;bool operator <(edge e1,edge e2){return e1.cost > e2.cost;}//重载运算符,更改排序优先级 
}es[maxm];
int ans[maxm];
int parent[maxn];
int find(int x)
{ return x == parent[x]?x:parent[x] = find(parent[x]);
} //找根节点 
int main(){memset(ans,-1,sizeof(ans));//初始化 for(int i = 1;i < maxn;++i)parent[i] = i;//将根节点首先初始化 scanf("%d%d",&n,&m);for(int i = 0;i < m;++i)scanf("%d%d%d",&es[i].u,&es[i].v,&es[i].cost);sort(es,es+m);//排序 scanf("%d",&q);for(int i = 0;i < q;++i){int x,y;scanf("%d%d",&x,&y);Q[x].insert(i);Q[y].insert(i);//set插入元素无需插入 }for(int i = 0;i < m;++i){int x = es[i].u,y = es[i].v,c = es[i].cost;int px = find(x),py = find(y);if(px == py) continue;else{if(Q[px].size() > Q[py].size())swap(px,py);vector<int> tmp;for(it = Q[px].begin();it != Q[px].end();++it){int id = *it;if(Q[py].count(id))//set之后返回0和1 {ans[id] = c;tmp.push_back(id);}Q[py].insert(id);}for(int i = 0;i < tmp.size();++i)Q[py].erase(tmp[i]);parent[px] = py;}}for(int i = 0;i < q;++i)printf("%d\n",ans[i]);
}

完结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试深度解析】快手后端一面:G1、IOC、AOP、并发、JVM生产问题定位、可重复读、ThreadLocal

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

BeanDefinition学习

Spring版本5.1.x Spring中的BeanDefinition是一个接口&#xff0c;用于描述Spring容器中Bean的元数据。BeanDefinition描述了Bean的各种属性&#xff0c;如名称、依赖关系、初始化方法等。这个接口通常用于在Spring的IoC容器中注册Bean&#xff0c;并且当容器需要创建Bean实例…

代码随想录算法训练营第38天 | 动态规划理论基础 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯

动态规划理论基础 动态规划适用于解决有重叠子问题的问题。所以动态规划中的每一个状态一定是由上一个状态推导来的&#xff0c;这一点区分于贪心&#xff0c;因为贪心每一步总是取局部最优。 解题步骤&#xff1a; 确定dp数组的含义确定递推表达式dp数组如何初始化确定遍历顺…

MySql修改字段类型和大小

MySql 修改表字段的类型和大小 原因&#xff1a; 1&#xff0c;在我们设计表的时候&#xff0c;有时设计表字段女的大小和类型的时候&#xff0c;有时可能不合适&#xff0c;需要修改字段的大小 2&#xff0c;修改表字段的常见2种&#xff0c;第一种修改大小&#xff0c;第二…

图像处理之《可逆重缩放网络及其扩展》论文精读

一、文章摘要 图像重缩放是一种常用的双向操作&#xff0c;它首先将高分辨率图像缩小以适应各种显示器或存储和带宽友好&#xff0c;然后将相应的低分辨率图像放大以恢复原始分辨率或放大图像中的细节。然而&#xff0c;非单射下采样映射丢弃了高频内容&#xff0c;导致逆恢复…

LVGL部件6

一.圆弧部件 1.知识概览 2.函数接口 1.lv_obj_clear_flag 在 LVGL&#xff08;LittlevGL&#xff09;中&#xff0c;lv_obj_clear_flag 函数用于清除对象的特定标志位。该函数的原型如下&#xff1a; void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t flag);obj 是指…

[力扣 Hot100]Day20 旋转图像

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 出处 思路 旋转时每四个位置为一组进行swap操作&#xff0c;找好对…

计算视图里的projection和aggregation节点区别

Projection 和 Aggregation到底有什么区别&#xff1f; 看名字就能看出来的。 那么在什么场景下用呢&#xff1f; 1. Projection就是投影&#xff0c;也就是说你本来的源里有什么&#xff0c;就直接给你拿出来。 除了这个&#xff0c;它使用的场景就是&#xff1a; 只映射需…

python 读图片 读文件封装

python 读图片封装 支持 视频&#xff0c;图片文件夹&#xff0c;图片 2024.02.01更新 安装依赖项&#xff1a;pip install natsort #-*-coding:utf-8-*- import os.path from natsort import natsorted import cv2class ImgReader:def __init__(self, source, suffixmp4):s…

帮管客CRM 文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

TCP/IP详细介绍以及TCP/IP寻址

目录 ​编辑 1. TCP/IP 介绍 2. 计算机通信协议&#xff08;Computer Communication Protocol&#xff09; 3. 什么是 TCP/IP&#xff1f; 4. 在 TCP/IP 内部 5. TCP 使用固定的连接 6. IP 是无连接的 7. IP 路由器 8. TCP/IP 9. TCP/IP 寻址 10. IP地址 …

谷歌产品大更新:Bard可生成图像;文生音乐平台等5大免费功能

2月2日&#xff0c;谷歌在官网对生成式AI产品进行了大更新&#xff0c;包括类ChatGPT聊天助手Bard可以通过文本提示生成图像&#xff1b; 全新的文生音乐平台MusicFX&#xff1b;新的文生图像平台ImageFX&#xff1b;新的文本扩写平台TextFX&#xff1b;在谷歌地图中增加生成式…

MATLAB矩阵的操作(第二部分)

师从清风 矩阵的创建方法 在MATLAB中&#xff0c;矩阵的创建方法主要有三种&#xff0c;分别是&#xff1a;直接输入法、函数创建法和导入本地文件中的数据。 直接输入法 输入矩阵时要以中括号“[ ]”作为标识符号&#xff0c;矩阵的所有元素必须都在中括号内。 矩阵的同行元…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市&#xff0c;编号从 1 1 1 到 n n n&#xff0c;城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。 现在有 q q q 辆货车在运输货物&#x…

UnitySahder实现Phong/BlinnPhong模型

目录 Phong模型公式&#xff1a; BlinnPhong模型公式&#xff1a; 实现&#xff1a; Phong模型&#xff1a; BlinnPhong模型&#xff1a; Phong模型公式&#xff1a; 结果自发光&#xff0b;环境光漫反射高光反射 BlinnPhong模型公式&#xff1a; 对Phong模型的简单修改&…

M1芯片MAC 安装MySQL、Nacos遇到的问题

摘要&#xff1a;由于电脑上是M1芯片&#xff0c;安装软件时遇到一系列问题&#xff0c;记录下踩的坑&#xff01;&#xff01;&#xff01; 安装MySQL MySQl官网下载链接区分ARM和X86架构&#xff0c;终端输入uname -a指令&#xff0c;本机显示为ARM czhczhdeiMac ~ % uname…

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库&#x1f342;配置本地仓库&#x1f342;工作区, 暂存区, 版本库&#x1f342;版本库工作区 添加文件&#x1f342;查看文件&#x1f342;修改文件&#x1f342;版本回退&#x1f342;☃️案例 撤销修改…

【华为OD机试】 最富裕的小家庭【2024 C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值, 一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一颗树,请计算出最富裕的小家庭的财富和。 输入描述 …

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中&#xff0c;我们将探索如何创建类似 Three.js 的赛博朋克场景&#xff0c;灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程&#xff0c;包括后处理效果和动态光照&#xff0c;所有这些都不需要任何着色器专业知识。 我用这个场…