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

强连通分量+缩点

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;
}
};

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

相关文章:

  • Linux命令-lprm(删除打印队列中任务)
  • 企业级音频内容管理:从混沌到有序的语音检索系统构建指南
  • 基于浏览器开发者工具的VK视频下载方案实践
  • 突破实时音频分析瓶颈:边缘AI技术让语音理解提速8倍
  • Linux命令-lpstat(查看打印机状态和打印队列信息)
  • 深入解析:STM32初学---总线:AHB、AHP / EEPROM、SPI FLASH、EMMC
  • Mac软件汉化完全指南:Axure RP 11界面本地化实操
  • 基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升 - 实践
  • 【WC 2026】 游记
  • 3步突破软件本地化障碍:从效率损耗到用户体验升级
  • Midscene.js调试工具终极指南:Playground与Chrome扩展完全手册
  • Java序列化从入门到精通:核心原理、实战应用与进阶优化
  • 智能驱动下的隐写术探查新范式:自动化工具体系与技术演进
  • 5大突破!抖音视频批量采集工具让内容获取效率提升300%的实战指南
  • YimMenu革新性全景指南:重新定义GTA5游戏增强工具体验
  • n8n自动化平台爆6个高危漏洞,4个RCE可致服务器完全接管,全网紧急升级预警
  • 5个技巧让游戏自动化效率工具为你解放双手
  • 视频资源获取工具高效解决方案:从入门到精通的全方位指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的会议室管理系统的设计与实现
  • 【含文档+PPT+源码】基于微信小程序的房屋租赁系统
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的公司工作任务管理系统的设计与实现
  • 智能释放系统加速工具:让电脑焕发新生的性能优化指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的企业人事管理系统的设计与实现
  • 如何利用开源无人机地面站Mission Planner实现专业级飞行控制?
  • 抖音内容批量获取工具:技术实现与效能优化指南
  • 电脑越用越慢?这款轻量工具让内存释放提升40%
  • 3步构建教育资源诊疗系统:从混乱管理到智能架构的转型方案
  • 当代码面临道德选择:VR如何为AI伦理决策注入“人性压力”
  • 智能预约系统2024版:开源自动预约工具的技术实现与部署指南
  • springboot计量器具管理平台开题报告