当前位置: 首页 > 编程日记 > 正文

倍增LCA NOIP2013 货车运输

货车运输

题目描述

A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。

输入输出格式

输入格式:

输入文件名为 truck.in。

输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道

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

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

接下来 q 行,每行两个整数 x、y,之间用一个空格隔开,表示一辆货车需要从 x 城市运输货物到 y 城市,注意: x 不等于 y 。

输出格式:

输出文件名为 truck.out。

输出共有 q 行,每行一个整数,表示对于每一辆货车,它的最大载重是多少。如果货

车不能到达目的地,输出-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%的数据,0 < n < 1,000,0 < m < 10,000,0 < q< 1,000;

对于 60%的数据,0 < n < 1,000,0 < m < 50,000,0 < q< 1,000;

对于 100%的数据,0 < n < 10,000,0 < m < 50,000,0 < q< 30,000,0 ≤ z ≤ 100,000。

NOIP2013,模板题???

不!

这可能是个森林!!!然而善心大发的CCF可能没有专门造数据卡直接用最大生成树写的人……

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring> 
 4 #include<algorithm>
 5 using namespace std;
 6 struct data{
 7     int next,to,dis;
 8 }edge[20010];
 9 struct dt{
10     int x,y,ds;
11 }eg[50010];
12 int n,m,q,cnt,tot;
13 int head[10010],deep[10010],w[10010][32],f[10010],fa[10010][32];
14 bool cmp(const dt&aa,const dt&bb){
15     return aa.ds>bb.ds;
16 }
17 int find(int x){
18     if(x!=f[x]) return f[x]=find(f[x]);
19     return x;
20 }
21 void add(int start,int end,int d){
22     edge[++cnt].next=head[start];
23     edge[cnt].to=end;
24     edge[cnt].dis=d;
25     head[start]=cnt;
26 }
27 void work(){
28     for(int j=0;(1<<j)<=n;j++)
29         for(int i=1;i<=n;i++)
30             if(fa[i][j-1]!=-1){
31                 fa[i][j]=fa[fa[i][j-1]][j-1];
32                 w[i][j]=min(w[i][j-1],w[fa[i][j-1]][j-1]);
33             }
34 }
35 void dfs(int u){
36     for(int i=head[u];i;i=edge[i].next)
37         if(!deep[edge[i].to]){
38             deep[edge[i].to]=deep[u]+1;
39             w[edge[i].to][0]=edge[i].dis;
40             fa[edge[i].to][0]=u;
41             dfs(edge[i].to);
42         }
43 }
44 int lca(int ss,int ee){
45     if(deep[ss]<deep[ee]) swap(ss,ee);
46     int i=0,rt=0x3f3f3f3f;
47     for(i=0;(1<<i)<=deep[ss];i++);
48     i--;
49     for(int j=i;j>=0;j--)
50         if(deep[ss]-(1<<j)>=deep[ee]){
51             rt=min(rt,w[ss][j]);
52             ss=fa[ss][j];
53         }
54     if(ss==ee) return rt;
55     for(int j=i;j>=0;j--)
56         if(fa[ss][j]!=-1&&fa[ss][j]!=fa[ee][j]){
57             rt=min(rt,min(w[ss][j],w[ee][j]));
58             ss=fa[ss][j];
59             ee=fa[ee][j];
60         }
61     return min(rt,min(w[ee][0],w[ss][0]));
62 }
63 int main(){
64     scanf("%d%d",&n,&m);
65     for(int i=1;i<=m;i++) scanf("%d%d%d",&eg[i].x,&eg[i].y,&eg[i].ds);
66     sort(eg+1,eg+m+1,cmp);
67     for(int i=1;i<=n;i++) f[i]=i;
68     int f1,f2;
69     for(int i=1;i<=m;i++){
70         f1=find(eg[i].x);
71         f2=find(eg[i].y);
72         if(f1!=f2){
73             f[f1]=f2;
74             add(eg[i].x,eg[i].y,eg[i].ds);
75             add(eg[i].y,eg[i].x,eg[i].ds);
76             tot++;
77         }
78         if(tot==n-1) break;
79     }
80     memset(fa,-1,sizeof(fa));
81     for(int i=1;i<=n;i++) 
82         if(!deep[i]){
83             deep[i]=1;
84             dfs(i);
85         }
86     work();
87     scanf("%d",&q);
88     int s,e;
89     for(int i=1;i<=q;i++){
90         scanf("%d%d",&s,&e);
91         if(find(s)!=find(e)){
92             printf("-1\n");
93             continue;
94         }
95         printf("%d\n",lca(s,e));
96     }
97     return 0;
98 }

转载于:https://www.cnblogs.com/sdfzxh/p/6906472.html

相关文章:

SVO学习笔记(二)

SVO学习笔记&#xff08;二&#xff09;这篇文章稀疏图像对齐地图点投影(地图与当前帧间的关系)reprojectMapreprojectPointreprojectCell特征点对齐中的非线性优化结尾这篇文章 这次仍是关于SVO系统的学习记录&#xff08;冲冲冲&#xff01;&#xff09;。这次的主要内容是sp…

用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)

首先需要用Navicat Premium创建一个student表 用Java连接好MySQL数据库&#xff08;需要copy一个mysql-connector-java-5.1.44-bin.jar包&#xff0c;该包可在网上找到&#xff09;后&#xff0c;我们开始用Java写一个学生管理系统&#xff1a; 我们首选需要定义好添加、删除、…

tensorflow在训练和验证时监视不同的summary的操作

如果想在训练和验证时监视不同的summary&#xff0c;将train summary ops和val summary ops放进不同的集合中即可。 train_writer tf.summary.FileWriter(log_dir /train, sess.graph) val_writer tf.summary.FileWriter(log_dir /val, sess.graph)# 假设train_loss和val_l…

Anaconda3 离线安装和配置 Django-3.2.7 使用 MySQL-5.7 数据库

Django文档 Settings / Core Settings / DATABASES 一节阐述了django与数据库交互配置的内容。 先在 MySQL 5.7 版本数据库中创建一个名为 learning_log_db 的数据库&#xff0c;和名为 myuser 的用户&#xff0c;并分配权限。 create databases learning_log_db; create use…

用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)

本文上接用JDBC写一个学生管理系统&#xff08;添加、删除、修改、查询学生信息&#xff09; 这次主要是对上一文中的查询方法做一下调整&#xff0c;用创建内部类的方法来实现学生信息的查询。 我们先要定义一个接口IRowMapper&#xff1a; import java.sql.ResultSet;public…

(原)ubuntu中使用conda安装tensorflow-gpu

转载请注明出处&#xff1a; https://www.cnblogs.com/darkknightzh/p/9834567.html 参考网址&#xff1a; https://www.anaconda.com/blog/developer-blog/tensorflow-in-anaconda/ 之前的一篇&#xff0c;直接安装tensorflow的&#xff1a; https://www.cnblogs.com/darkknig…

SVO中 Inverse Compositional Image Alignment方法的学习笔记

SVO中 Inverse Compositional Image Alignment方法的学习笔记这篇文章光流法简介逆向光流法结尾这篇文章 在SVO系统中的"Relaxation Through Feature Alignment"部分使用的是一种特别的LK光流法&#xff1a;the inverse compositional Lucas-Kanade algorithm&#x…

Head First设计模式之目录

只有沉淀、积累&#xff0c;才能远航&#xff1b;沉沉浮浮&#xff0c;脚踏实地。 这本书已经闲置了好久&#xff0c;心血来潮&#xff0c;决定写个目录&#xff0c;让自己坚持看完这本书 创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖…

HANA 数据库备份hang住的解决办法

今天遇到 HANA 数据库备份hang住的情况。经过查 SAP NOTE 解决&#xff0c;记录一下过程。两个NOTE如下&#xff1a; 2452735 - HANA Backup failing with "[447]: backup could not be completed: [110122] A data backup cannot be created because another data backu…

简单DP【p2642】双子序列最大和

Description 给定一个长度为n的整数序列&#xff0c;要求从中选出两个连续子序列&#xff0c;使得这两个连续子序列的序列和之和最大&#xff0c;最终只需输出最大和。一个连续子序列的和为该子序列中所有数之和。每个连续子序列的最小长度为1&#xff0c;并且两个连续子序列之…

JDBC工具类

本文主要是将JDBC最基础的增删改查的工具类的代码详细的罗列出来&#xff1a; 一、我们先来看一看项目结构: 二、配置JDBC工具类 1.我们先处理异常 我们知道几乎不可能一次性就写出完美的代码&#xff0c;都是要经过很多次的调试才行&#xff0c;那在调试过程中就难免会出现…

SVO 学习笔记(三)

SVO 学习笔记&#xff08;三&#xff09;这篇博客InitializationFrame_Handler_MonoprocessFirstFrameprocessSecondFrameprocessFramerelocalizeFrame结尾这篇博客 这篇博客将介绍SVO源代码中的frame_handler_mono、initialization两个文件的代码流程。前者是SVO系统类&#x…

CMAKE设置INSTALL工程,分别设置头文件、Lib和DLL的输出路径

使用CMAKE管理工程&#xff0c;可以设置工程中的INSTALL项目运行时安装的路径&#xff0c;使用命令&#xff1a;install。 可以简单的设置安装文件的路径和文件夹&#xff1a; set(head_files//要安装的头文件 ) install(TARGETS ${head_files} DESTINATION ${CMAKE_BINARY_DI…

2021年中国工业互联网安全大赛核能行业赛道writeup之hacker

附加题 hacker&#xff0c;题目描述&#xff1a;hacker&#xff0c;附件下载 hackerhttps://download.csdn.net/download/qpeity/33230528解压缩得到一个EXE文件 ARE_YOU_SDPD.exe&#xff0c;在一个文件夹下运行看一下。 用 IDA 反汇编一下&#xff0c;发现找不到程序入口&am…

利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签

当下人工智能是真心的火热呀&#xff0c;各种原来传统的业务也都在尝试用人工智能技术来处理&#xff0c;以此来节省人工成本&#xff0c;提高生产效率。既然有这么火的利器&#xff0c;那么我们就先来简单认识下什么是人工智能吧&#xff0c;人工智能是指利用语音识别、语义理…

动态环境下的SLAM:DynaSLAM 论文学习笔记

动态环境下的SLAM&#xff1a;DynaSLAM 论文学习笔记这篇文章论文摘要系统流程相关环节的实现方法神经网络检测图中动态物体&#xff08;Mask R-CNN&#xff09;Low-Cost Tracking使用多视图几何的方法检测图中动态物体&#xff08;Multi-view Geometry&#xff09;跟踪与建图&…

用C语言编写:判断一个≥2的整型数是否存在于斐波那契数列中?

自己写的&#xff0c;感觉挺有成就感的&#xff0c;就展示出来吧&#xff01; 判断一个≥2的整型数是否存在于斐波那契数列中&#xff1f; 若存在&#xff0c;则返回第几项&#xff1b;若不在&#xff0c;则返回-1 #include <stdio.h> long generate(long n);//函数声…

团队作业8——第二次项目冲刺(Beta阶段)--第六天

会议照片&#xff1a; 燃尽图&#xff1a; 项目进展&#xff1a; 练习模式能够给出正确的答案&#xff0c;部分模块正在正在测试。 团队贡献比&#xff1a; 队员 角色 团队贡献比 陈麟凤 PM 17% 张志杰 DEV 18% 黄海鸿 TEST 16% 康建灿 TEST 16% 许明涛 DEV…

2021年中国工业互联网安全大赛核能行业赛道writeup之隐写

附件题&#xff1a;隐写 题目描述&#xff1a;隐写 附件下载&#xff1a; 2021-10-12T15_44_19.17491400_00scene.jpg.zip-网络攻防文档类资源-CSDN下载 ​ 先用 010Editor 查看这个图片&#xff0c;能直接看到图片的头部是否完整正常&#xff0c;能直接看到是否隐藏了fla…

SVO 学习笔记(深度滤波)

SVO 学习笔记&#xff08;深度滤波&#xff09;这篇博客论文中的深度滤波深度滤波的代码流程更新Seed对象初始化Seed对象结尾这篇博客 这篇博客将介绍SVO论文中的Mapping部分&#xff0c;主要介绍深度滤波器在获取新的图像帧后&#xff0c;更新相应地图点深度的过程。&#xff…

寻找孪生素数(当p为素数时,p+2也为素数)

数学家希尔伯特在1900年国际数学家大会的报告上提出一个“孪生素数猜想”&#xff0c;即&#xff1a; 存在无穷多个素数p&#xff0c;使得p 2是素数。p和p2这一对差为2的素数&#xff0c;被称为“孪生素数”。 看起来&#xff0c;这个猜想是成立的&#xff0c;我们总能找到很多…

C++利用cin输入时检测回车的方法

今天做TJU的OJ &#xff0c;其中一道题是先读入一个字符串&#xff0c;再读入一个整数&#xff0c;循环往复&#xff0c;直到字符串是空&#xff0c;也就是说回车键结束循环。 但是cin对空格和回车都不敏感&#xff0c;都不影响继续读入数据&#xff0c;所以需要一种新的方式检…

使用grep过滤make的输出内容

make的输出内容其实分为两种&#xff0c;有些是到标准输出&#xff0c;有些是到标准错误&#xff0c;由于标准输出和标准错误默认都是屏幕&#xff0c;所以平时区分不出来&#xff0c; 实际上一般是error和warning信息到标准错误&#xff0c;其余的到标准输出。 如果要过滤erro…

2021年中国工业互联网安全大赛核能行业赛道writeup之机房密码

附件题&#xff1a;机房密码 题目描述&#xff1a; &#xff08;具体描述忘记了&#xff09; 经过黑客人员的不屑努力&#xff0c;在上位机上发现了登录密码的一半信息&#xff0c;剩下的一半要靠你们继续努力辣&#xff01;&#xff01;&#xff01; ZmxhZyU3Qmgwd19hX0M 附件…

ORB-SLAM2系统的实时点云地图构建

ORB-SLAM2系统的实时点云地图构建这篇博客点云地图构建的流程代码介绍点云地图构建类对象小调整获取关键帧点云地图构建与叠加在地图中设置当前相机位置点云地图到Octomap的转换地图效果结尾这篇博客 &#xff08;PS:修改于2020-9-21&#xff0c;添加了关于System和Tracking类…

使用maven导入jar包

我们都经历过自己写代码时有时就要引用一些第三方的jar包&#xff0c;这个我们都会&#xff0c;但在公司里进行团队开发时&#xff0c;是不允许我们自己导入jar包的&#xff0c;是由项目组长之类的统一导入jar包&#xff0c;我们在这里来了解一下这个过程&#xff1a; a、先创建…

Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于&#xff1a;2012-09-15 19:09:28 浏览&#xff1a;164次0Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活…

关于CSS的长度单位及颜色表示

长度单位 1.q 1/4mm. 2.px 计算机语言中的像素。大多数网页制作常用图片分辨率为72&#xff0c;即每英寸像素为72,1英寸等于2.54cm。那么通过换算可以得出每厘米等于28像素。 3.em 它是描述相对于应用在当前元素的字体尺寸&#xff0c;所以它也是相对长度单位。一班浏览器字体大…

2021年中国工业互联网安全大赛核能行业赛道writeup之鱿鱼游戏

目录 一、尝试 二、Writeup 附加题 鱿鱼游戏&#xff08;来自最近一部很火的韩剧&#xff09; 题目描述&#xff1a; 小王由于操作不规范&#xff0c;误将不明U盘插入到上位机中&#xff0c;导致上位机中的某些关键文件被加密&#xff0c;但攻击者在U盘中还留下了一个可执行…

视觉惯性SLAM: VI ORB-SLAM

视觉惯性SLAM: VI ORB-SLAM这篇博客视觉惯性SLAM预备知识符号说明&#xff1a;相机投影变换矩阵IMU数据更新方程IMU数据的预积分VI ORB-SLAM各环节工作方式InitializationTrackingLocalMappingLoop ClosingFull BAIMU初始化估计bgb_{g}bg​估计尺度sss和重力向量gWg_{W}gW​&am…