当前位置: 首页 > news >正文

【学习笔记】带权并查集

简介

我们还可以在并查集的边上定义某种权值和这种权值在路径压缩时产生的运算,从而解决更多的问题。也称为「种类并查集」或「拓展域并查集」。

实现

为了维护并查集中的边权,需要将边权下放到子节点中存储。因此,每个节点存储的都是它到它的父节点之间的边权。只有当一个节点的父节点发生变化时,才需要相应地调整边权。一般情形中,这可能发生在路径压缩和合并两个节点时。

例题 三值逻辑

题解

可以将 U,T 看作两个点
首先可以预处理出点 \(i(1\le i \le n)\) 由哪个点 \(from_i\) 的初始值决定,且 \(i\)\(from_i\) 之间的边权为 \(w_i\)
之后跑一次带权并查集,从 \(1\)\(n\) 遍历每一条边,因为要使所有边的限制都满足,所以如果遍历到一条边,边两端的端点都已经在同一个集合中了,且两点间的边权异或值不是当前边的边权,那么就需要把整个集合都设为 U。
最后统计根是 U 的个数即可。

code

注意,写带权并查集时,对于点 x,要先执行 f[x]=find(f[x]) 来计算 f[x] 到根的边权异或和,但是这时 f[x] 就是根而不是原来的 f[x],所以要先用 tmp 将原本的 f[x] 记录下来,具体见代码。

#include<bits/stdc++.h>
#define fo(a, b, c) for(int b = a; b <= c; b++)
#define N 1000010
using namespace std;
int c, T, n, m;
int fa[N], p[N], from[N], w[N];
int find(int x){if(x == fa[x]) return x;int tmp = fa[x];return fa[x] = find(fa[x]), p[x] ^= p[tmp], fa[x];
}
void solve(){cin >> n >> m;fo(1, i, n + 2) fa[i] = i, p[i] = 0, from[i] = i, w[i] = 0;fo(1, i, m){int x, y; char op;cin >> op >> x;if(op == '+' || op == '-') cin >> y;if(op == '+') from[x] = from[y], w[x] = w[y];if(op == '-') from[x] = from[y], w[x] = w[y] ^ 1;if(op == 'T') from[x] = n + 1, w[x] = 0;if(op == 'U') from[x] = n + 2, w[x] = 0;if(op == 'F') from[x] = n + 1, w[x] = 1;}fo(1, i, n){int x = i, y = from[i], fx = find(x), fy = find(y);if(fx != fy) fa[fx] = fy, p[fx] = p[x] ^ p[y] ^ w[x]; else if(p[x] ^ p[y] ^ w[x]) fa[fx] = n + 2, p[fx] = 0;}int ans = 0;fo(1, i, n){if(find(i) == n + 2) ans++;}cout << ans << "\n";
}
int main(){ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cin >> c >> T;while(T--) solve();return 0;
}
http://www.jsqmd.com/news/26308/

相关文章:

  • 2025年钢带木箱生产商权威推荐榜单:物流运输包装木箱/可拆卸木箱/物流运输钢边箱源头厂家精选
  • 大促全链路隔离
  • Notepad++ 下载安装与配置全攻略(2025最新版)—— 高效编辑技巧全指南
  • 利用React Hooks简化状态管理
  • 2025年靠谱的304冲压式潜水搅拌机最新TOP厂家推荐
  • 我们如何解决求子集团个数
  • 从零开始制作 MyOS(四)
  • 2025年10月压力监测厂家对比榜:五强评测与选型参考
  • 2025年质量好的洗菜盆厨房水槽优质厂家推荐榜单
  • 基于VC++和ObjectARX开发的AutoCAD曲线交点打断功能实现代码
  • 12个单词
  • 不是,斜二倍增是啥啊
  • 2025年评价高的滚珠丝杆升降机用户好评厂家排行
  • 2025 年消防培训学校最新推荐榜,技术实力与市场口碑深度解析
  • 2025年知名的GXN-CMS型碳分子筛实力源头
  • 2025年10月中国离婚财产分割律师榜单:官方资质与用户口碑综合排名
  • 2025 年上海留学服务机构最新推荐榜,聚焦机构综合服务实力与留学申请口碑深度解析
  • 用Fiddler修改网页title的步骤
  • K3s x RustFS,边缘场景下的云原生存储解决之道
  • 2025年10月进度管理工具推荐:信创适配进度系统排名榜
  • 2025-10-29 ZR-J 模拟赛 赛后总结【ZR】
  • 2025年热门的上海行星式搅拌机设备行业内口碑厂家排行榜
  • 阿里云 OSS postObject V4 使用
  • 2025年10月武汉离婚律师推荐榜:五强对比评测与选择指南
  • 用筛选过滤器修改京东界面名字
  • 2025年靠谱的精冲工艺座椅齿板厂家最新TOP排行榜
  • 修改京东商城官网title为百度商城
  • springboot+vue图书借阅管理专业的系统设计(源码+文档+调试+基础修改+答疑)
  • 2025 年散热器厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析及多领域适配能力储能液冷/锂电/铜管串铝翅片散热器公司推荐
  • 图纸安全外发策略,保障企业知识产权与市场竞争力