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

强连通分量与2SAT

如果有向图 G 的一个导出子图中的各个点两两可达,且满足其为极大导出子图,则这个导出子图是一个强连通分量。

其求解可以采取 tajan 算法。
从任意一个点进入搜索,访问的过程会形成一个搜索树,树上一共有四种边:

  • 树边:当前结点 \(u\) 连向一个未访问过的结点 \(v\),将递归到 \(v\) 继续搜索。
  • 返祖边:当前结点 \(u\) 连向一个祖先结点 \(v\)\(u\) 可以通过这条边返祖,形成强连通分量。
  • 前向边:当前结点 \(u\) 连向一个已经访问过的(否则为树边)后代结点 \(v\),如果经由 \(v\) 能访问到比 \(u\) 更早的结点,那么 \(u\) 可以通过 \(v\) 返祖,形成强连通分量。
  • 横叉边:当前结点 \(u\) 连向一个已经访问过的非祖先非后代结点 \(v\),如果经由 \(v\) 能访问到比 \(lca_{uv}\) 更早的结点,那么 \(u\) 可以通过 \(v\) 返祖,形成强连通分量。

对于树边,直接递归 DFS 即可。对于其他三类,如果他们能访问到的最高结点在根到 \(u\) 的路径上,则更新 \(u\) 能访问的最高结点。

可以发现,需要有一个办法方便地记录各个结点能访问的最高的结点,并且能够比较其距离根的距离。
我们可以用一个数组 dfn 为各个结点打上时间戳,再用一个数组 low 记录各个结点能访问的最高的节点。
当点 \(u\) 能够去到一个去过的点 \(v\),而 \(low_v < low_u\) 时,\(u\) 能够通过 \(v\) 去到一个更高的结点。但是这里有一个问题,如果 \(e_{u \rightarrow v}\) 是一条横叉边,则虽然 \(low_v\) 比较小,但是并不一定能通过 \(v\) 回到 \(u\) 的祖先,此时需要确认 \(low_v\)\(u\) 的祖先。
具体操作为可以再开一个栈,每访问一个结点,将其压入栈,再开一个数组,标记栈中元素。如果发现当前点无法再返回到更高的点了,那么这个点以下的所有点都无法访问到更高的点,需要依次出栈。
当发现返祖边、前向边、横叉边时,检查一下对方点是不是在栈内,也即能否返回到比 \(u\) 的祖先。

void dfs(int node) {low[node] = dfn[node] = ++ts;ins[node] = true, sk.push(node);for (int nxt : g[node]) {if (!dfn[nxt]) dfs(nxt);if (ins[nxt]) low[node] = min(low[node], low[nxt]);}if (low[node] == dfn[node]) {++scc;while (true) {int now = sk.top();ins[now] = false, sk.pop();bel[now] = scc, sz[scc]++;if (now == node) break;}}
}
http://www.jsqmd.com/news/943177/

相关文章:

  • 2026年主数据管理平台推荐,大型国企集团企业适配选型攻略 - 品牌2026
  • AI工具响应延迟突增200ms?根源竟是偏好缓存一致性崩塌!一线专家手撕6层偏好同步链路(含Wireshark抓包实录)
  • 图灵奖得主Sutton新作:AI的下一步,是走向“生成认知”
  • Flink零基础入门,一篇吃透Flink核心概念+本地环境搭建+首个实战程序
  • 免费小说资源终极指南:开源书源助你告别书荒
  • 郑州装修公司推荐|2026年6月 避坑必看!本土靠谱装修怎么选,这 8 大雷区千万别踩 - 博客万
  • Spring个人知识体系总结
  • 2026年PDF转Word免费详细教程:无需注册的在线工具和小程序推荐 - AI测评专家
  • 四川高校科技成果转化如何避坑?从技术评估到交易撮合的深度解构
  • 如何快速优化AI输入:Jina Reader智能网页转换工具完全指南
  • 云尖信息与杭州电子科技大学共建就业实习基地,深度赋能产教融合新生态
  • Matlab纯代码实现CVRP遗传算法求解:含路径可视化与参数自定义
  • 颠覆性抖音内容管理革命:douyin-downloader让你的创作效率提升300%
  • 贵阳花溪区创源靠谱吗?2026年6月聚焦铝车身冰雹坑专修工艺,深挖原厂漆无损精修硬核实力 - 十大排行榜推荐
  • 2026 南京钻石回收怎么选?梳理靠谱钻石回收渠道 - 薛定谔的梨花猫
  • Libre Barcode革命:让条码生成像打字一样简单的终极解决方案
  • 实测对比:用vLLM直接推理LoRA微调后的模型,比LLaMA-Factory的API部署快5倍
  • 基于Arduino与步进电机的自动喂食机DIY:从原理到实践
  • 北京西装定制权威指南:2024年5家顶级店铺专业测评 - 西装爱好者
  • 大模型也要翻资料:一篇读懂 RAG 检索增强生成
  • Windows 11系统优化终极指南:用开源工具Win11Debloat重获清爽体验
  • 海外直播拍卖订单履约难点:跨境链路协同与流程优化
  • 机器人仿真技术解析:Gazebo Sim 开源仿真平台深度剖析
  • 用剪映做短视频,别死磕基础操作,选对工具和素材,真的能少走 90% 的弯路
  • VisionPro棋盘格校准工具CogCalibCheckerboardTool保姆级教程:从选板到实战测量
  • 干货合集:2026年最值得信赖的专业AI论文平台
  • 多模态不再是口号:Gemini 3.5 原生多模态能力的落地价值解析
  • 私有化音视频系统/视频高清直播点播EasyDSS重塑企业视频门户新生态
  • 【上饶 + 闲置金银变现 + 靠谱回收门店五强榜单】 - 余生黄金回收
  • Python抓取抖音评论的3种方案(2026版)