
最小生成树
gjghfd
这个作者很懒,什么都没留下…
展开
-
bzoj3732 -- 最小生成树+倍增
显然使A到B的最长边最小的路径一定在最小生成树上,否则一定可以使生成树更小。求出原图的最小生成树,然后用倍增求路径上最大值就可以了。代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 15010 7 #define S 15 8 struct Edge{ 9原创 2017-05-26 16:44:13 · 217 阅读 · 0 评论 -
poj1789--最小生成树
水题。。。 题目大意: 用一个7位的字符串代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。 很容易想到,将每两个顶点间的distance求出作为边权,将题目转化为最小生成树问题原创 2017-05-26 16:39:59 · 273 阅读 · 0 评论 -
codeforces827D Best Edge Weight -- 最小生成树+倍增
题目大意:给定一个联通图,对于每条边求出它的最大权值,使其在图的所有最小生成树上。先求出图的一棵最小生成树:对于不在树上的边(u,v), 它的权值只要小于树上u到v路径中一条边就可以代替这条边。对于在树上的边(u,v),可以先预处理出所有两端在u到v路径上的不在树上的边的最小值。它的权值一定要小于最小值。路径max和min都可以用倍增求。 时间复杂度O(nlog n)原创 2017-07-12 17:06:55 · 1261 阅读 · 0 评论 -
[ Xor最小生成树 分治 字典树 ] Codeforces888G Xor-MST
裸的 xorxorxor 最小生成树。 枚举每一位,把这一位为 000 的放在一起形成一个连通块,为 111 的放在一起形成一个连通块,之间用字典树求一条最小边,然后分治做。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int M=6200000;int k,n,m;vec...原创 2018-05-21 09:38:45 · 639 阅读 · 0 评论