图论实验A题_网络

题面:A.网络

思路:求MST(最小生成树)+树上倍增LCA(树链剖分还不懂orz)

1. 最小生成树的理论依据:无向连通图中任意两点间路径最大权的最小值 = 该图最小生成树中这两点唯一路径中最大权

2. 求最小生成树的方法:

  • Kruskal算法(适用于稀疏图)

然而事实是Kruskal还没有自己实现过,把这三题AC掉再说

  • Prim算法(适用于稠密图)

本题是完全图Kn,并且Prim算法O(n^2)的复杂度在本题中1<=n<=5000的数据规模里是妥妥的不会TLE.(一般而言,n^2复杂度时,n<=10000较好)

参考链接:

Prim算法模板

Prim算法堆优化(简要)

Prim算法优先队列版本

3. 倍增(在线)LCA算法:求Least Common Ancestor

已知一棵树(一般是已知n-1条边及其顶点),每次给出一个询问q,给出两结点a,b之间的最近公共祖先

变式:求树上两结点a,b的距离;求两结点a,b路径最大/小权

参考链接:

LCA三种求解方法

基本树上倍增LCA的写法

洛谷1967题解:如何求结点a,b间最大/小权

已知儿子结点时,树上倍增写法

 4. 补充:

最大值最小与最小值最大问题

原文地址:https://www.cnblogs.com/horizonlc/p/10853728.html