先用kruskal处理出一个最小生成树 对于非树边,倍增找出两端点间的最大边权-1就是答案 对于树边,如果它能被替代,就要有一条非树边,两端点在树上的路径覆盖了这条树边,而且边权不大于这条树边 这里可以树剖来做,但是不想用.. 如果先把非树边从小到大排序然后去覆盖树边,那么一条树边只需要被覆盖一次 所以可以用一个并查集来把父子边被覆盖的点合到一起,在合并之前记下来这次覆盖的边权,下次再覆盖的时候直接跳过去就可以 #include<bits/stdc++.h> #define pa pair&l…
[题目]D. Best Edge Weight [题意]给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它.n,m<=2*10^5,1<=wi<=10^9. [算法]最小生成树+倍增LCA+并查集 [题解]首先求出图的一个最小生成树M,则所有边分成树边和非树边. 一.对于非树边(u,v),假设u和v在最小生成树M上的路径的最大边权是Max.要保证这条边在最小生成树上,只要w(u,v)=Max-1. 下面证明w(u,v)=Max-1时…
3910: 火车 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 262  Solved: 90[Submit][Status][Discuss] Description A 国有n 个城市,城市之间有一些双向道路相连,并且城市两两之间有唯一路径.现在有火车在城市 a,需要经过m 个城市.火车按照以下规则行驶:每次行驶到还没有经过的城市中在 m 个城市中最靠前的.现在小 A 想知道火车经过这m 个城市后所经过的道路数量.  Input 第一行三个整…
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入描述 Input Description 第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座…
思路: 先把所有的加油站 push进按weight排序的优先队列里 对于每个不是加油站的点 找到到它的点的最短路以及它来源的加油站 如果x和y有边 且x和y加油站的来源不一样 则它可以连边 跑一边Kruskal 倍增查一下 搞定了 (注意图可能不连通) //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespac…
题目大意:给定一个n个点m条边的无向连通图.k次询问两点之间全部路径中最长边的最小值 NOIP2013 货车运输.差点儿就是原题...仅仅只是最小边最大改成了最大边最小.. . 首先看到最大值最小第一反应二分答案 可是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树 先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值就可以 本蒟蒻竟然把LCA写挂了... 并且例子还过了... 伤不起啊... 90%达成 剩下一道刷点啥呢... #include<cstdio> #…
题意: 给定一个点数为 n,边数为 m,权值不超过 \(10^9\) 的带权连通图,没有自环与重边. 现在要求对于每一条边求出,这条边的边权最大为多少时,它还能出现在所有可能的最小生成树上,如果对于任意边权都出现,则输出 \(-1\). 这里写一个用倍增的\(O(nlogn)\)做法. 先求出一个最小生成树. 1.若x到y在树上,那么对于任意一条非树边\(e(a,b)\),若满足a到b的树上路径经过\(e(x,y)\), 那么,根据最小生成树的性质,添加\(e(a,b)\)后生成的环上的最大边必…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connected graph G with n nodes and m edges, with possibly repeated edges and/or loops. The stability of connectedness between node u and node v is defined by…
Kruskal 重构树 [您有新的未分配科技点][BZOJ3545&BZOJ3551]克鲁斯卡尔重构树 kruskal是一个性质优秀的算法 加入的边是越来越劣的 科学家们借这个特点尝试搞一点事情. kruskal求最小生成树的过程,如果把加入的一个边新建一个节点的话,并且把k1,k2的father设为新点的话,会得到一个2*n大小的树 实际上已经非常明白地表示kruskal这个过程了.这个树叫kruskal重构树 每个点的权值定义为所代表的边的权值.叶子节点权值最优. 由于贪心,所以树上所有点,…
神仙题. 先考虑平方级别的暴力怎么做. 明显答案有单调性,先二分 \(c\). 先最短路预处理 \(dis_u\) 表示 \(u\) 到离它最近的充电站的距离(一开始把 \(1\) 到 \(k\) 全部丢到优先队列里就行了). 考虑当前站在 \(u\) 点上时,剩余的电量是 \(x\).注意到由于起点是充电站,就一定有 \(x\le c-dis_u\)(考虑最后一个走到的充电站沿最短路走到这) 如果 \(x<dis_u\),因为终点是充电站,肯定不可能再到终点. 否则就可以走到最近的充电站再回来…