千问    LeetCode 3887. 增量偶权环查询 C++实现
这道题的核心是带权并查集将环边权和为偶数转化为环上边权异或和为 0通过维护每个节点到根的异或距离来判断新边是否会形成奇权环。核心思路1. 问题转化边权为 0 或 1环的边权和为偶数 ⟺ 环上所有边权的异或和为 02. 维护目标如果图中所有环的异或和都为 0那么任意两点间任意路径的异或和都是唯一确定的与路径无关3. 带权并查集用 fa[x] 记录父节点dis[x] 记录 x 到父节点路径上的边权异或和。通过路径压缩find(x) 后 dis[x] 就是 x 到根的异或距离4. 判断逻辑对于边 (u, v, w)若 u、v 已在同一集合检查 dis[u] ^ dis[v] ^ w 是否为 0为 0 说明新环异或和为偶数可加入否则会产生奇权环跳过C 实现class Solution {vectorint fa, dis; // dis[x]: x 到 fa[x] 路径上的边权异或和// 带路径压缩的 find调用后 dis[x] 变为 x 到根的异或距离int find(int x) {if (fa[x] ! x) {int root find(fa[x]);dis[x] ^ dis[fa[x]]; // 累积异或距离fa[x] root;}return fa[x];}public:int numberOfEdgesAdded(int n, vectorvectorint edges) {fa.resize(n);dis.assign(n, 0);for (int i 0; i n; i) fa[i] i;int count 0;for (auto edge : edges) {int u edge[0], v edge[1], w edge[2];int ru find(u), rv find(v);if (ru rv) {// 已在同一集合检查新环的异或和// 环的异或和 dis[u] ^ dis[v] ^ wif ((dis[u] ^ dis[v] ^ w) 0) {count; // 偶权环可以加入}// 否则产生奇权环跳过} else {// 不在同一集合合并不会形成环// 需要让 dis[u] ^ dis[v] ^ w 0 成立// 即 dis[ru] dis[u] ^ dis[v] ^ wdis[ru] dis[u] ^ dis[v] ^ w;fa[ru] rv;count;}}return count;}};关键点解析- 路径压缩时的异或更新dis[x] ^ dis[fa[x]] 是因为 x 到根的异或距离 x 到旧父节点的异或 ⊕ 旧父节点到根的异或- 合并时的权重设置合并 ru 和 rv 时设置 dis[ru] dis[u] ^ dis[v] ^ w保证合并后 u 和 v 之间的异或距离恰好等于 w- 时间复杂度O(m · α(n))其中 m 是边数α 是反阿克曼函数近似线性- 空间复杂度O(n)示例验证以 n3, edges[[0,1,1],[1,2,1],[0,2,1]] 为例1. 边 (0,1,1)0 和 1 不在同一集合合并count12. 边 (1,2,1)1 和 2 不在同一集合合并count23. 边 (0,2,1)0 和 2 已在同一集合环异或和 dis[0]^dis[2]^1 1^1^1 1奇数跳过最终返回 2与预期一致。需要我帮你整理一份带权并查集异或/加法的通用模板吗遇到类似题可以直接套用。

相关新闻

SSH终端的剪切粘贴和移动的区别

SSH终端的剪切粘贴和移动的区别

背景 由于很多工具本身就不支持SSH协议远程的移动功能,所以很多网友对于SSH的移动没有感触,但是移动的性能远远高于剪切和复制,而且对于文件的Linux权限属性保存的最为完整,所以很多场景下是极为有用的。今天就使用DESK倚天剑比较…

2026/10/25 5:33:55 阅读更多 →
从4宫格到9宫格:数独逻辑思维训练与系统性解法全解析

从4宫格到9宫格:数独逻辑思维训练与系统性解法全解析

1. 从“格子游戏”到逻辑思维训练:数独的入门与进阶数独,这个看似简单的数字填充游戏,早已超越了娱乐的范畴,成为锻炼逻辑推理、专注力和空间想象力的绝佳工具。很多人第一次接触数独,面对9x9的庞大宫格和密密麻麻的数…

2026/10/25 19:00:19 阅读更多 →
计算机毕业设计之基于Spark的7K7K小游戏可视化系统设计与实现

计算机毕业设计之基于Spark的7K7K小游戏可视化系统设计与实现

随着大数据技术的不断发展,可视化系统在数据分析与呈现方面发挥着越来越重要的作用。7K7K小游戏作为一款广受欢迎的游戏平台,其用户数据蕴含着丰富的价值,然而传统的数据分析方法往往难以有效地提取和展示这些数据。因此,本文提出…

2026/10/24 19:40:02 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/1 0:24:43 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻