当前位置: 首页 > 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.gsyq.cn/news/34604.html

相关文章:

  • 2025年质量好的洗菜盆厨房水槽优质厂家推荐榜单
  • 2025年知名的GXN-CMS型碳分子筛实力源头
  • 2025年10月中国离婚财产分割律师榜单:官方资质与用户口碑综合排名
  • 2025年热门的上海行星式搅拌机设备行业内口碑厂家排行榜
  • 2025年靠谱的精冲工艺座椅齿板厂家最新TOP排行榜
  • 修改京东商城官网title为百度商城
  • 2025 年散热器厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析及多领域适配能力储能液冷/锂电/铜管串铝翅片散热器公司推荐
  • 图纸安全外发策略,保障企业知识产权与市场竞争力
  • 体素化
  • 吃数篇 酉鸡
  • Web信息的物联网设备指纹如何生成
  • 思维day2
  • 2025年口碑好的家装液压铰链厂家最新权威实力榜
  • 2025年热门的压花韩国绒厂家最新热销排行
  • 2025年比较好的双螺杆清洗料厂家推荐及采购参考
  • 2025年知名的德国品牌缓冲铰链最新TOP品牌厂家排行
  • k8s 默认进入容器的用户是什么
  • 第六届大数据与社会科学国际学术会议
  • 告别盲目跟进!纷享销客CRM销售漏斗助力医疗器械行业实现精准过程管理
  • 2025年热门的双功能缓冲隐藏轨厂家最新实力排行
  • vs 无法加载一个或多个断点
  • 平衡树splay
  • 2025年靠谱的白刚玉颗粒厂家推荐及选择指南
  • 2025年热门的免浆河虾仁厂家推荐及选择指南
  • 2025.10.30——1蓝
  • 平衡树(二叉排序树)
  • 分享几个我珍藏的JS冷门但实用的技巧
  • Ubantu下创建虚拟环境的一些经验
  • 2025年热门的电动观光车厂家推荐及选购参考榜
  • 项目效率翻倍,做对了什么?