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

DeepSeek LeetCode 2608. 图中的最短环 C语言实现

解题思路LeetCode 2608「图中的最短环」要求在无向图中找出最短环的长度如果不存在环则返回 -1。BFS广度优先搜索 是解决这类问题最直观有效的方法因为 BFS 天然适合在无权图中寻找最短路径。核心思想从每个顶点出发进行 BFS记录每个节点的层数即与起点的距离。当 BFS 过程中遇到一个已经访问过的节点且该节点不是当前节点的父节点时就找到了一个环。环的长度等于 dist[x] dist[y] 1其中 x 和 y 是 BFS 树中形成环的两个端点。为什么这样能确保找到最短环BFS 按层展开第一次检测到的环一定是经过起点的最短环。由于我们枚举了所有起点全局最优解必然出现在某次 BFS 中。只需遍历所有顶点作为起点对每个起点跑一次 BFS取所有环的最小值即可。---C语言实现c#define MAXN 1005#define INF 0x3f3f3f3fint findShortestCycle(int n, int** edges, int edgesSize, int* edgesColSize) {// 1. 构建邻接表int** g (int**)malloc(sizeof(int*) * n);int* deg (int*)calloc(n, sizeof(int));for (int i 0; i n; i) {g[i] NULL;}for (int i 0; i edgesSize; i) {int u edges[i][0], v edges[i][1];deg[u];deg[v];g[u] (int*)realloc(g[u], sizeof(int) * deg[u]);g[v] (int*)realloc(g[v], sizeof(int) * deg[v]);g[u][deg[u] - 1] v;g[v][deg[v] - 1] u;}int ans INF;// 2. 从每个顶点出发 BFSfor (int start 0; start n; start) {int* dist (int*)malloc(sizeof(int) * n);int* parent (int*)malloc(sizeof(int) * n);for (int i 0; i n; i) {dist[i] -1;}int* queue (int*)malloc(sizeof(int) * n);int* pqueue (int*)malloc(sizeof(int) * n);int front 0, rear 0;dist[start] 0;parent[start] -1;queue[rear] start;pqueue[rear] -1;rear;while (front rear) {int u queue[front];int fa pqueue[front];front;for (int i 0; i deg[u]; i) {int v g[u][i];if (dist[v] -1) { // 未访问加入队列dist[v] dist[u] 1;parent[v] u;queue[rear] v;pqueue[rear] u;rear;} else if (v ! fa v ! parent[u]) { // 已访问且不是父节点发现环int cycleLen dist[u] dist[v] 1;if (cycleLen ans) {ans cycleLen;}}}}free(dist);free(parent);free(queue);free(pqueue);}// 3. 释放邻接表内存for (int i 0; i n; i) {if (g[i] ! NULL) {free(g[i]);}}free(g);free(deg);return ans INF ? -1 : ans;}---代码说明1. 构建邻接表遍历所有边用 g 数组存储每个顶点的邻接点deg 记录度数用于动态分配内存。2. BFS 遍历对每个起点 start 执行 BFS使用 dist 记录到起点的距离parent 记录父节点。当遇到已访问的邻接点 v 且 v 不是当前节点的父节点也不是祖父节点时说明形成了一个环。3. 环长计算dist[u] dist[v] 1 是经过 start 的环的长度取所有搜索结果的最小值。4. 边界处理如果 ans 保持初始值 INF说明图中不存在环返回 -1。---复杂度分析· 时间复杂度O(n²)n 为顶点数量n ≤ 1000。对每个顶点执行一次 BFS每次 BFS 复杂度为 O(n)总体 O(n²) 在实际约束下可行。· 空间复杂度O(n²)邻接表存储图所需的额外空间。
http://www.rkmt.cn/news/1372847.html

相关文章:

  • Qwen模型 LeetCode 2608. 图中的最短环 Java实现
  • 井下巷道无感精准定位 作业人员在岗离岗智能甄别
  • 【ChatGPT小红书爆款文案公式】:20年AI内容专家亲授3步生成高互动率文案(附17个真实转化数据)
  • 北京游学机构哪家好?求推荐孩子独立研学北京,安全有保障的机构 - 品牌2025
  • 深度学习篇---NVIDIA TensorRT
  • 深度学习篇---张量
  • 【仅剩72小时生效】DeepSeek最新v3.2.1热补丁:强制启用动态批处理+量化缓存,立省GPU开销29%
  • 哪个工程信息平台专业?2026年5月推荐TOP5评测数据准确防错失特点选择指南 - 品牌推荐
  • 毕业论文难写?2026年AI论文写作软件排行榜权威发布,轻松达标不是梦!
  • 考虑分时电价和电动汽车灵活性的微电网两阶段鲁棒经济优化调度研究(Matlab代码实现)
  • 多功能计算器 · 使用说明
  • Windows和Office一键激活终极指南:KMS_VL_ALL_AIO智能脚本完全解析
  • 如何在3分钟内精准定位Windows热键冲突:Hotkey Detective终极指南
  • 2025-2026年上海吉日搬场有限公司电话查询:搬家前应核实资质与合同条款 - 品牌推荐
  • 2026权威软件测试机构推荐榜:北京软件验收测试、北京北京软件测评、北京机构课题软件检测报告、北京第三方软件测试选择指南 - 优质品牌商家
  • ChatGPT+B站策划=降维打击?不,92%创作者正在错误使用——来自217个失败案例的反模式图谱(含3个致命Prompt陷阱)
  • 揭秘顶级AI画师不愿透露的ChatGPT绘画提示词生成底层逻辑:基于LLM注意力机制的Prompt语法树建模
  • 2026华北电信行业信息安全方案推荐:北京远程数据恢复、北京取证数据恢复、北京数据恢复公司、北京数据销毁服务、北京服务器数据恢复选择指南 - 优质品牌商家
  • 苹果bois 很封闭吗 摘录
  • 2025-2026年国内充电桩加盟品牌推荐:十大排行厂家评测技术实力价格场景痛点 - 品牌推荐
  • Burp Suite扫描深度配置:插入点、会话控制与被动分析实战
  • 帆软V8任意文件读取漏洞深度解析:从privilege.xml泄露到RBAC崩塌
  • 2026成都门店系统开发及水利软件服务商推荐:成都网站建设/成都自来水业务管理/成都门店系统开发/四川商城网站建设/选择指南 - 优质品牌商家
  • 如何用TestDisk和PhotoRec拯救丢失数据:3分钟快速诊断与完整恢复指南
  • VideoSrt终极指南:3步实现视频自动字幕生成,告别手动打轴烦恼
  • 2025-2026年犀鸟搬场服务(上海)有限公司电话查询:搬家前请核实资质与合同条款 - 品牌推荐
  • 芯片介绍:74HC245
  • LangGraph 状态存储优化:处理大规模多智能体数据的高效方案
  • 2026泥浆固化压滤机租赁优质品牌推荐榜:800平方压滤机出租、全套压滤机出租、冶炼厂污水处理、化工厂泥浆污泥分离选择指南 - 优质品牌商家
  • 2025-2026年25-30万家用SUV车型推荐:十大口碑产品评测家庭出行长续航市场份额价格 - 品牌推荐