并查集模板 本文最后更新于:3 years ago 1.并查集 123456789101112const int MAXN = 1e5 + 5e2;int bin[MAXN];inline int find (int x) { return bin[x] == x ? x : (bin[x] = find(bin[x]); }inline void merge(int a, int b) { int fa = find(a); int fb = find(b); if (fa != fb) { bin[fa] = fb; }} 2.带权并查集 1234567891011121314151617181920const int MAXN = 2e5 + 5e2;int bin[MAXN], sum[MAXN];int res = 0;inline int find(int x) { if (x != bin[x]) { int temp = bin[x]; bin[x] = find(bin[x]); sum[x] += sum[temp]; } return bin[x];}inline void merge(int a, int b, int val) { int fa = find(a); int fb = find(b); if (fa != fb) { bin[fa] = fb; sum[fa] = - sum[a] + sum[b] + val; //合并后a到fa的权值会是反的,素以需要减去 }} formwork 模板 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处! 马拉车算法模板 Previous 各种筛法模板 Next Please enable JavaScript to view the comments