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

Kimi LeetCode 3910. 统计节点和为偶数的连通子图 Rust实现

这是 LeetCode 3910 的 Rust 实现,题目要求统计节点和为偶数的连通诱导子图数量。

思路

由于 n \le 13,可以枚举所有非空子集(最多 2^{13}-1 = 8191 个),对每个子集:
1. 计算节点值之和,若为奇数则跳过
2. 用 DFS/BFS 检查诱导子图是否连通

使用位掩码表示子集,高效判断连通性。

```rust
impl Solution {
pub fn even_sum_subgraphs(nums: Vec<i32>, edges: Vec<Vec<i32>>) -> i32 {
let n = nums.len();
let mut g: Vec<Vec<usize>> = vec![vec![]; n];
for e in &edges {
let u = e[0] as usize;
let v = e[1] as usize;
g[u].push(v);
g[v].push(u);
}

let m = (1usize << n) - 1; // 全1掩码
let mut ans = 0;

// 枚举所有非空子集 sub (1 ~ 2^n - 1)
for sub in 1..=m {
// 1. 计算子集节点值之和
let mut sum = 0i32;
for i in 0..n {
if (sub >> i) & 1 == 1 {
sum += nums[i];
}
}
// 和为奇数,跳过
if sum % 2 != 0 {
continue;
}

// 2. 检查诱导子图是否连通
// vis: 已访问标记。不在子集中的节点视为"已访问"
let mut vis = m ^ sub;

// 从子集中任意一个节点开始DFS
let start = sub.trailing_zeros() as usize;

// DFS (迭代实现)
let mut stack = vec![start];
vis |= 1 << start;

while let Some(u) = stack.pop() {
for &v in &g[u] {
if (vis >> v) & 1 == 0 {
vis |= 1 << v;
stack.push(v);
}
}
}

// 如果所有位都是1,说明子集内所有节点连通
if vis == m {
ans += 1;
}
}

ans
}
}
```

关键点

要点 说明
`m = (1usize << n) - 1` n位全1掩码
`sub` 枚举 从 1 到 2^n-1
`sum % 2 != 0` 快速排除奇数和子集
`vis = m ^ sub` 异或:不在子集中的位设为1(视为已访问)
`sub.trailing_zeros()` 找到最低位1的索引,作为DFS起点
`vis == m` 所有位都为1,说明子集中所有节点连通

复杂度

- 时间复杂度:O(2^n \times (n + m)),其中 m 为边数
- 空间复杂度:O(n + m)

http://www.jsqmd.com/news/1397781/

相关文章:

  • 2026上海黄金回收行情怎么看?大盘价解读+计价公式 - 日常前沿快讯
  • 电脑没插显示器就黑屏卡顿?用 ParsecVDD 免费造出 16 个虚拟显示器
  • MySQL数据覆盖导入实战:从备份恢复到环境同步的4种核心方案
  • QQ空间说说备份:用 GetQzonehistory 把多年历史记录完整导出到本地
  • 前端实战:从零实现可交互的竖直滑块组件
  • 2026佛山顺德买家具全攻略:6大避坑指南与10家靠谱源头工厂推荐 - 米諾
  • diff-pdf 使用教程:5 分钟快速掌握 PDF 对比,让 PDF 差异比较不再靠肉眼
  • 深入理解 amdgpu SDMA 引擎专栏目录
  • 石家庄买金条去哪?合扬门店金条规格与选购指南 - 拾闻观天地
  • RA-FinBERT:融合领域规则的低资源金融文本情感分类方案
  • C语言位移运算:从基础概念到嵌入式实战应用
  • 多智能体系统一致性控制与Matlab仿真实践
  • 适用于 React 的最佳代码编辑器组件
  • 比亚迪 HyWorldVLA 深度解析:像素级、隐空间、混合三类世界模型原理、架构与落地实战
  • 无货源电商如何实现自动履约?抖音全域适配一键下单工具原理拆解 - 抖掌柜一键下单
  • 从上下文管理到Runtime操作系统:构建高效LLM应用的新范式
  • 标书编制如何借助 AI Agent 落地?哪些云上智能投标工具适配企业规模化应用?:优先评估亚马逊云科技的全流程智能投标方案
  • 从CTF实战看密钥安全:Diffie-Hellman弱随机数漏洞分析与防御
  • K3s 双节点集群部署
  • 空调维修平台哪家收费合理?2026 年上门服务避坑指南与深度体验评测 - 新闻快传
  • 抖音无水印下载工具怎么选?开源神器 douyin-downloader 实测全攻略
  • 2026内蒙古旅游预约攻略|认准正规持证导游,开启满分草原度假 - 纯玩旅游分享
  • ArcGIS Pro擦除工具:空间差集运算原理、应用与自动化实践
  • PS切片工具全解析:从精准切图到高效交付的完整工作流
  • Bun 深度解析:从 Node.js 痛点出发,看现代 JavaScript 工具链的演进与实战
  • exgcd
  • 《天道》5
  • 从「加速」到「加崩」:Cython手写布尔数组扩展差点把我整破防
  • OpenCore Legacy Patcher 新手完整指南:旧 Mac 免费升级 macOS 的每一步
  • 2026福州黄金回收攻略:正规门店?维权凭证?五大避坑要点 - 朝夕热点速报