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

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

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

思路

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

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

```java
import java.util.*;

class Solution {
private List<Integer>[] g;
private int vis;
private int m;

public int evenSumSubgraphs(int[] nums, int[][] edges) {
int n = nums.length;
// 建图
g = new List[n];
Arrays.setAll(g, k -> new ArrayList<>());
for (int[] e : edges) {
g[e[0]].add(e[1]);
g[e[1]].add(e[0]);
}

m = (1 << n) - 1; // 全1掩码,表示所有节点都在"已访问"状态
int ans = 0;

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

// 2. 检查诱导子图是否连通
// vis: 已访问标记。初始时,不在子集中的节点视为"已访问"(m ^ sub)
// 这样DFS只会在子集内的节点中传播
vis = m ^ sub;

// 从子集中任意一个节点开始DFS(取最高位的1)
int start = Integer.numberOfTrailingZeros(sub);
dfs(start);

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

return ans;
}

private void dfs(int u) {
vis |= (1 << u); // 标记u为已访问
for (int v : g[u]) {
// 如果v未被访问(在子集中且未访问)
if (((vis >> v) & 1) == 0) {
dfs(v);
}
}
}
}
```

关键点解释

要点 说明
`m = (1 << n) - 1` n位全1掩码
`sub` 枚举 从 1 到 2^n-1,每个整数代表一个子集
`sum % 2 != 0` 快速排除奇数和子集
`vis = m ^ sub` 异或:不在子集中的位设为1(视为已访问),子集中的位为0(待访问)
`Integer.numberOfTrailingZeros(sub)` 找到子集中最低位的1的位置,作为DFS起点
`vis == m` DFS结束后所有位都为1,说明子集中所有节点连通

复杂度

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

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

相关文章:

  • 随手拍也能变成杂志大片:最近值得玩的 9 个照片处理 Skill
  • 【寄电瓶车到外省哪个物流便宜?2026价格对比与推荐,看完不再踩坑】 - 快递物流资讯
  • 换模小车,工厂注塑压铸模具移位简易高效设备 - 优企甄选
  • 春秋云镜靶场漏洞复现:CVE-2022-1014 WP Contacts Manager 未认证 SQL 注入
  • 第5章,[Win32 章节] :边框绘制函数(四)
  • HTX火币钱包官方网站代码全流程
  • 还在为Wand专业版续费?试试这款开源增强器,解锁Pro还送手机遥控
  • 构建可控AI Agent:从ReAct架构到安全实践
  • 小帅VXhook框架
  • Hydro SPJ 配置:告别答案唯一!
  • 春秋云镜靶场漏洞复现:CVE-2022-0948 Order Listener for WooCommerce REST SQL 注入
  • DBeaver数据库管理工具:一站式跨数据库连接与SQL编辑实战指南
  • 朝闻通品牌传播有哪些优势?全域媒体资源与全链条服务详解
  • 从Kimi暂停订阅看AI大模型推理的算力瓶颈与优化策略
  • 液压夹具工业应用,成型机床精准夹紧固定设备解析 - 优企甄选
  • 从“十佳班级”到“最好的我们”:班级建设的系统化实践与深度复盘
  • HoRain云--Codex CLI 配置
  • AI研发框架重构Git工作流:提升67%代码审查效率
  • FDE系列11:差异分析——产品与客户需求之间的鸿沟怎么填?
  • Seedance2.5 正式上线】
  • 换模台车,注塑压铸车间模具快速转运高效设备 - 优企甄选
  • AI图像生成实战:从提示词工程到环境配置,探索可灵AI创作神秘之地
  • Web安全渗透测试入门:从环境搭建到SQL注入实战的完整学习路径
  • 磁力换模系统优势,注塑压铸车间高效换模改造方案 - 优企甄选
  • 致癌、致畸、不孕不育……实验室有毒试剂清单!!
  • 春秋云镜靶场漏洞复现:CVE-2022-0848 Part-DB 标签生成器 `.pht` 上传执行
  • 二建注册流程
  • 安卓文件同步新手指南:Syncthing for Android 的免云端直连方案
  • 店雷达推荐码优惠折扣码是什么?电商选品工具就用店雷达! - 跨境电商卖家出海
  • iOS设备机型对照表:开发、测试与交易必备的硬件识别指南