并查集
文章平均质量分 66
并查集
Fiveneves
这个作者很懒,什么都没留下…
展开
-
2020 Multi-University Training Contest 2-1001.Total Eclipse
1001.Total Eclipse 题目链接-1001.Total Eclipse 题目大意 nnn个点mmm条边的无向图,每个点有一个正点权,每次选择一个连通子图,将里面的权值都减111,求所有点权为000的最小操作次数 解题思路 贪心+并查集贪心+并查集贪心+并查集 常规思路就是每次选择一个最大的连通块,将里面的数同时减小,知道最小值变为000,然后将变成零的点删除,再分裂多个联通块继续执行上述操作 但是这样操作明显会超时,那么我们就可以把操作顺序倒过来,用并查集反向处理连通块,先把大的点权值减原创 2020-07-28 01:34:59 · 233 阅读 · 0 评论 -
2020智算之道初赛第二场 - 高校组 C.情报战
C.情报战 题目链接-C.情报战 解题思路 并查集+虚根并查集+虚根并查集+虚根 附上代码 #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<stdio.h> #include<ctype.h> const int N=3e5+10; inline void read(int &x){ char t=getchar(); while(!isdigit(t)) t=getchar();原创 2020-07-23 15:51:49 · 154 阅读 · 0 评论 -
SWUST OJ 1065: 无向图的连通分量计算
1065: 无向图的连通分量计算 题目链接-1065: 无向图的连通分量计算 解题思路 并查集或dfs并查集或dfs并查集或dfs 并查集并查集并查集:将能相互连通的点的集合赋予一个共同的父亲(即合并),然后统计父亲的个数就行了 dfsdfsdfs:循环找没有被标记过的点,然后对该点进行深搜,一次深搜能访问该节点所有能访问的边,统计有几次dfsdfsdfs就能知道有几个连通分量了(与dfsdfsdfs求连通块一个思路) 附上代码 并查集并查集并查集 #pragma GCC optimize("-Ofa原创 2020-05-19 10:31:27 · 1029 阅读 · 0 评论 -
HDU 1863. 畅通工程
1863. 畅通工程 题目链接-1863. 畅通工程 解题思路 最小生成树最小生成树最小生成树-Kruskal板子题 直接套板子,合并的时候cnt++cnt++cnt++计一下数,最后判断一下时候全部联通(即cnt==m-1)即可 全部联通则输出最低成本,否则输出? 具体操作见代码 附上代码 #pragma GCC optimize("-Ofast","-funroll-all-loops"...原创 2020-04-20 21:05:02 · 153 阅读 · 0 评论 -
洛谷 P2872 [USACO07DEC]Building Roads S
P2872 [USACO07DEC]Building Roads S 题目链接-P2872 [USACO07DEC]Building Roads S 解题思路 KruskalKruskalKruskal 附上代码 #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> #define ...原创 2020-04-18 00:46:11 · 1006 阅读 · 0 评论 -
Codeforces Round #479 (Div. 3) E. Cyclic Components
E. Cyclic Components 题目链接-E. Cyclic Components 题目大意 给你nnn个点和mmm条边,求所构成图中单圈环的个数 解题思路 并查集并查集并查集 很明显单圈环每个点的度都为2,所以我们可以用数组cnt[]记录每个点的度,只需要找度为2的点即可 如果一条边两个顶点的度都为2,我们可以用并查集判断两点是否在一个子图里 用并查集判断两个点父节点是否相同...原创 2020-04-11 01:50:50 · 145 阅读 · 0 评论