Kruskal算法(适用于稀疏图) 1、将所有边按权重从小到大排序 O(mlogn) 2、枚举每条边a,b,权重c O(m) if a,b不连通 将这条边加入集合中 判断连通 使用并查集来判断两个连通块是否连通 #include<iostream> #include<algorithm> using ...
The Suspects 题目:编号为0的人有传染病,同组中只要有一个人有传染病,该组的人都被看做有传染病,一个人可以在多组中,问有多少人有传染病。 思路:并查集,需要压缩并查集的树,编号小的点优先作为祖先(0为root),并查集过程中传递祖先的同时传递祖先是否是病人,最后再次遍历所有人,使得祖先是 ...
分类:
其他好文 时间:
2020-07-04 01:20:05
阅读次数:
57
这是一篇我犯过的各种弱智错误的合集,记录下来以备后用 1.scanf("%d",a); 2.BFS忘记设置队头元素; 3.BFS时忘记每次循环结束后head++ 3.并查集的使用:fa[find(x)] = find(y); 4.(经常导致段错误)邻接表遍历,循环时一顿操作最后忘记将当前边指针指向下 ...
分类:
其他好文 时间:
2020-07-03 21:23:44
阅读次数:
69
这个月每日一题有很多没做的,主要重心放在并查集和二分查找的题。 ...
分类:
其他好文 时间:
2020-06-29 16:57:53
阅读次数:
49
题目 https://www.luogu.com.cn/problem/P1536 这道题第一眼的思路感觉是最小生成树,但是发现它的边没有权值,所以这道题的问题是求解这个图的连通块的个数,而需要连接的道路条数就是连通块的个数减一 代码 #include<iostream> #include<cstd ...
分类:
其他好文 时间:
2020-06-28 22:50:01
阅读次数:
103
题目 https://www.luogu.com.cn/problem/P2814 思路 我们跨一使用string类型的map直接进行并查集! 注意这种形式的map的初始化!! 代码 #include<iostream> #include<cstdio> #include<string> #incl ...
分类:
其他好文 时间:
2020-06-28 22:21:52
阅读次数:
51
P3367 【模板】并查集 #include<bits/stdc++.h> using namespace std; const int N=1e4+10; int a[N]; int n,m; int fa[N]; int find(int x){ if(fa[x]==x){ return x; ...
分类:
其他好文 时间:
2020-06-28 20:32:04
阅读次数:
33
集训之6-26模拟赛一 T1 [信息传递][1] 就是要找最小环,开始写拓扑结果挂了,因为写拓扑找的是连通图,但这个可以不连通,比如有分离的一个大环和一个小环。求这道题最小环可以是Tarjan求 \(size>1\) 的强联通,也可以用并查集。时间差不多,并查集可能不太好想但代码长度和内存大概是Ta ...
分类:
其他好文 时间:
2020-06-26 22:40:33
阅读次数:
62
https://www.luogu.com.cn/problem/P5443 Solution 有一个显然的暴力,对于一个询问直接枚举$m$条边,如果边权$\ge w$就在并查集中合并。 答案就是$s$所在连通块的大小。对于修改,直接更改边的权值即可。 如果没有修改的话还可以将操作离线,排序后不断向 ...
这么简单的东西我现在才学,血亏... on tree大家都能翻译过来。至于dsu,大概就是并查集的意思吧。 但是这并不代表并查集上树了,只是代表用到了启发式合并的思想。 进入正题: 我们有一颗树,有对于子树的询问。这种题暴力就是遍历每个节点的子树中的所有信息暴力统计出来更新答案,然后消除该节点的贡献 ...
分类:
其他好文 时间:
2020-06-24 22:00:15
阅读次数:
46