随笔分类 - 最小生成树
摘要:题目分析: 这道题的关键是找出隐含条件 很容易看出,原图是一颗以节点1为根的有根树。求得的祖孙关系会是一条包括所有点的树。于是就可以猜到使用最小生成树解决问题。 由于答案是输出每一个生物的直系祖先,而根据题意,点a的直系祖先一定是所有点中距离点a最近的点。(可以反证法证明) 而这个prim的过程就是
阅读全文
摘要:libreoj传送门 ###算法分析 仿照kruskal的过程,将生成树中的边按边权升序排序,将边两端点所属的点集合合并,将两个点集合中所有点向另一个点集合中连边,由于要维持最小生成树在完全图中的唯一性,则连边的边权需为e[i].w+1, 则产生的贡献为tot+=(e[i].w+1)*(cnt[e[
阅读全文
摘要:由于原来的模板在某些题目中出现了一些不可知的错误,我就把模板换了一个写法。 #include<bits/stdc++.h> using namespace std; int f[310][310]; int n,m,a,b,c,dis[310]; bool vis[310]; void prim()
阅读全文
摘要:两个月前写的模板,忘记存blog了 prim #include<cstdio> #include<algorithm> using namespace std; const int maxn=2e5+5; int n, m, f[maxn][maxn],tot,dis[maxn],s; bool v
阅读全文

浙公网安备 33010602011771号