dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][maxn]; int d[maxn]; ...
分类:
其他好文 时间:
2020-02-13 13:19:31
阅读次数:
98
krustral算法求最少结点数的最小生成树,用优先队列实时排序,优先选择已经被选中的中心~ #include<bits/stdc++.h> using namespace std; const int maxn=10014; int N,M,x,y; struct edge { string na ...
分类:
其他好文 时间:
2020-02-13 12:32:57
阅读次数:
84
按题意枚举每个点,建立缺少该点情况下的最小生成树,取权值最大的~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][maxn]; int visit[max ...
分类:
其他好文 时间:
2020-02-13 11:20:31
阅读次数:
65
JSOI 2008 最小生成树计数 今天的题目终于良心一点辣 一个套路+模版题。 考虑昨天讲的那几个结论,我们有当我们只保留最小生成树中权值不超过 $ k $ 的边的时候形成的联通块是一定的。 我们可以先拿 kruskal 跑一棵最小生成树,然后我们可以从小到大枚举边权,把所有除开枚举到的边权的边全 ...
分类:
Web程序 时间:
2020-02-13 11:17:20
阅读次数:
92
笛卡尔树 好东西, 可以用于最大(小)值分治, 在$O(n)$的时间复杂度内建出一个节点为区间最大值的树, 每次分治时走小区间可以保证$O(nlog_n)$的复杂度 建树时维护极右链, 他的中序遍历即原序列 代码 克鲁斯卡尔重构树 就像跑最小生成树一般, 只是每次合并时新建一个节点t, 让它与两个连 ...
分类:
其他好文 时间:
2020-02-07 01:06:56
阅读次数:
89
最小生成树(Minimum Span Tree):对于带权无向连通图。所有节点都连通且总权值最小。应用:电缆布线、网络、电路设计 找V-1条边,连接V个顶点,总权值最小 切分定理(Cut Property):给定任意切分,横切边中权值最小的边必属于最小生成树 切分:把图中节点分为两部分 横切边:边的 ...
分类:
编程语言 时间:
2020-02-05 16:12:21
阅读次数:
109
贪心策略:总是考虑在当前状态下局部最优的策略,一定满足最优子结构,不断地把问题归纳为更小的相似地子问题 拟阵:许多用贪心算法求解的问题,可以表示求带权拟阵的最大权独立子集问题 区间贪心: 一、区间不相交问题 总是选择左端点最大的区间 struct node{ int x,y; }a[maxn]; b ...
分类:
编程语言 时间:
2020-02-05 13:23:10
阅读次数:
68
题目链接 1 #include <bits/stdc++.h> 2 # define LL long long 3 using namespace std; 4 5 const int maxn=5000+10; 6 int n; 7 LL dis[maxn]; 8 int complete[max ...
分类:
其他好文 时间:
2020-02-04 11:02:51
阅读次数:
120
给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。 由V中的全部n个顶点和E中n-1条边构成 ...
分类:
编程语言 时间:
2020-02-03 16:14:33
阅读次数:
94
给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。 由V中的全部n个顶点和E中n-1条边构成 ...
分类:
编程语言 时间:
2020-02-03 15:55:36
阅读次数:
68