最小生成树
河渔船
成长的小垃圾
展开
-
P1546 最短网络(最小生成树)
题见洛谷最小生成树prim#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; int tu[101][101],dis[101],a[101]; int main() { //freopen("a.in","r",std原创 2017-02-10 11:37:06 · 273 阅读 · 0 评论 -
P1265 公路修建
洛谷 1265#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<vector> #define pow1(x) (x)*(x) using namespace std; int n; double zx[5009],zy原创 2017-03-08 15:31:03 · 524 阅读 · 0 评论 -
P1396 营救
luogu 解法:Kruskal最小生成树; 在构建最小生成树时,如果 s 与 t 在一个集合里时,当前边就是答案(因为便是按照升序排的)#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<vec原创 2017-03-08 18:34:29 · 549 阅读 · 0 评论 -
bzoj 1821 部落划分
评测:http://www.lydsy.com/JudgeOnline/problem.php?id=1821 分析一下题目: 因为最后答案是距离最近的部落的距离最远,即尽量把短的边合并进部落中。 一开始可以看做n个部落,将边排一遍序,用克鲁斯卡尔从最小的边开始将两端的点合并(如果不在一个集合中),每合并一次,集合数目就 -1,直到剩下k个部落,那么下一条两端没有在一个集合中的边就是要求的原创 2017-07-25 15:31:04 · 334 阅读 · 0 评论 -
口袋的天空
https://www.luogu.org/problem/show?pid=1195 克鲁斯卡尔最小生成树。#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<algorithm> #include<queue> #include<vector> using namespace std原创 2017-07-25 16:14:29 · 606 阅读 · 0 评论 -
保留道路
50%的做法: 先按照s升序排序。 从小到大枚举maxg,把g小于maxg的边全部选出来,(因为前面已经排过序了),造一棵最小生成树,更新答案。时间复杂度≈O(m*m)。 100分的做法: 按照g升序排序。 维护一个n-1条边的边集,是上一个建造的最小生成树的边集。 从前往后枚举maxg,把这条边按照s用插入排序插入到当前n-1条边的集合中。 在这样的n条边的集合中建造一颗最小生成树,原创 2017-08-21 17:52:17 · 513 阅读 · 0 评论 -
NOIP 2013 货车运输(最大生成树+倍增LCA/Tarjan)
评测传送最大生成树+LCA(倍增或Tarjan)我的Tarjan TLE了 倍增可以过,而且很快。倍增#include<iostream> #include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<cstring> const int N=10009; const int M=50009; cons原创 2017-10-18 14:31:17 · 396 阅读 · 0 评论 -
刷题#R9
立方体 cube.in/.out/.cpp 【问题描述】 在 n 维空间中,一个单位立方体由 2^n 个点组成。 他们的坐标形如 (x 1 ,x 2 ,…,x n ),x i ∈ {0,1}。 定义 n 维空间中两点的距离为其曼哈顿距离,点 p (p 1 ,p 2 ,…,p n ) 与点 q (q 1 ,q 2 ,…,q n ) 的距离为 ∑ n i=1 |p i −原创 2017-11-03 11:10:03 · 418 阅读 · 0 评论