news 2026/7/6 7:59:58

强连通分量+缩点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
强连通分量+缩点

lc3383

强连通分量:图里互相可达的节点,打包成一个整体。
缩点:把每个强连通分量当成一个“超级节点”,原图变成有向无环图

#include <vector>
using namespace std;

class Solution {
public:
int minRunesToAdd(int n, vector<int>& crystals, vector<int>& flowFrom, vector<int>& flowTo) {
vector<vector<int>> g(n);
vector<vector<int>> rg(n);

for (int i = 0; i < flowFrom.size(); ++i) {
int u = flowFrom[i], v = flowTo[i];
g[u].push_back(v);
rg[v].push_back(u);
}

vector<bool> vis(n), vis2(n);

auto dfs = [&](auto&& self, int x) -> void {
if (vis[x]) return;
vis[x] = 1;
for (int y : g[x]) self(self, y);
};

auto dfs2 = [&](auto&& self, int x) -> bool {
if (!vis[x]) return 1;
if (vis2[x]) return 0;
vis2[x] = 1;
for (int y : rg[x]) if (self(self, y)) return 1;
return 0;
};

for (int c : crystals) dfs(dfs, c);

int ret = 0;
for (int i = 0; i < n; ++i) {
if (!vis[i]) {
dfs(dfs, i);
if (!dfs2(dfs2, i)) ret++;
}
}
return ret;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 8:07:47

Java序列化从入门到精通:核心原理、实战应用与进阶优化

在Java开发体系中&#xff0c;序列化是实现对象持久化与跨进程通信的核心技术之一&#xff0c;它看似基础却贯穿于分布式系统、缓存框架、消息队列等众多高频开发场景。对于Java初学者而言&#xff0c;掌握序列化的核心逻辑、实现方式与避坑技巧&#xff0c;不仅能夯实基础编程…

作者头像 李华
网站建设 2026/7/2 8:04:32

springboot教学质量开题报告

目录 开题报告背景与意义系统功能设计技术实现要点创新点与预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 开题报告背景与意义 教学质量评估是教育管理的核心环节&#xff0c;SpringBoot作为高…

作者头像 李华
网站建设 2026/7/4 10:15:26

springboot服装贸易购物商城开题报告

目录 研究背景与意义系统目标技术选型创新点研究计划预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 研究背景与意义 随着电子商务的快速发展&#xff0c;服装贸易行业对高效、安全的在线购物平…

作者头像 李华
网站建设 2026/7/5 16:37:01

设计流程智能化:Illustrator脚本如何重构创意工作流

设计流程智能化&#xff1a;Illustrator脚本如何重构创意工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 设计流程自动化正在重塑创意行业的工作方式。作为设计师&#xff0c…

作者头像 李华