摘要:
Kruskal算法是求最小生成树的一种算法,运用了贪心的思想,十分常用。算法流程大体如下:将m条边按边权从小到大排序,枚举每条边,如果该边的起点和终点已经在最小生成树中,则跳过,否则就将这条边加入到最小生成树中。具体实现方面会借助于并查集,来判断两个点是否在最小生成树中(已连通)。 1 #inclu 阅读全文
摘要:
并查集是一种用于判断元素是否属于同一集合的数据结构,本质是一棵树,我们一般需要维护每个结点的父亲。 并查集最起码要支持查询和合并操作。 1 int n, fa[maxn]; 2 3 inline void init() { 4 for (int i = 1; i <= n; ++i) 5 fa[i] 阅读全文
摘要:
当输入数据跨度大,但是比较稀疏时,就没有必要开几万几百万的数组,可以用离散化求得其相对位置,以节省资源,提高效率。 阅读全文
摘要:
关于输入输出,可选择的方法一共有3种:1、cin和cout2、scanf和printf3、读入/输出优化这三种方法都有各自的优点,也有相应的瑕疵。其中cin和cout使用起来最为方便简单,但速度较慢,数据规模较大时可能会超时,不过可以通过关闭与stdio的同步来加速。 加速之后就可以达到甚至超过sc 阅读全文