Description 传送门 Solution 注意到$DFS$的时候每次选择一个$DFS$树的子树后必然会走所有子树中的节点,所以原问题变成所有子树内的顺序乘子树外的顺序。 这样可以将还没有经过的节点状压,进行记忆化搜索。$DFS$树的子树个数就是去掉当前点之后的连通块个数,用并查集维护即可。  ...
                            
                            
                                分类:
其他好文   时间:
2020-07-07 13:32:39   
                                阅读次数:
62
                             
                    
                        
                            
                            
                                    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$所在连通块的大小。对于修改,直接更改边的权值即可。 如果没有修改的话还可以将操作离线,排序后不断向 ...