图论17-有向图的强联通分量-Kosaraju算法
文章目录
- 1 概念
- 2 Kosaraju算法
- 2.1 在图类中设计反图
- 2.2 强连通分量的判断和普通联通分量的区别
- 2.3 代码实现
1 概念



2 Kosaraju算法
对原图的反图进行DFS的后序遍历。


2.1 在图类中设计反图
// 重写图的构造函数public Graph(TreeSet<Integer>[] adj, boolean directed){this.adj = adj;this.directed = directed;this.V = adj.length;this.E = 0;indegrees = new int[V];outdegrees = new int[V];for(int v = 0; v < V; v ++)for(int w: adj[v]){outdegrees[v] ++;indegrees[w] ++;this.E ++;}if(!directed) this.E /= 2;}// 求反图,并且new一个图对象,参数为TreeSetpublic Graph reverseGraph(){TreeSet<Integer>[] rAdj = new TreeSet[V];for(int i = 0; i < V; i ++)rAdj[i] = new TreeSet<Integer>();for(int v = 0; v < V; v ++)for(int w : adj(v))rAdj[w].add(v);return new Graph(rAdj, directed);}
2.2 强连通分量的判断和普通联通分量的区别
强联通分量是环,意味着在DFS过程中一定是公用相同的联通分量序号。
当这个环遍历从环尾开始返回并记录ccid的时候,DFS自由返回到环, 索引指向下一个未被访问过的环外的节点,此时联通分量序号+1。 由于图是反过来的。
单步调试一下更容易理解。

2.3 代码实现
顶点:注意这里遍历的顺序是反过来的图。
并且,对翻转过来的图进行DFS后序遍历。
GraphDFS dfs = new GraphDFS(G.reverseGraph());ArrayList<Integer> order = new ArrayList<>();for(int v: dfs.post())order.add(v);Collections.reverse(order);for(int v: order) //注意这里遍历的顺序是反过来的图if(visited[v] == -1){dfs(v, scccount);scccount ++;}
但是在DFS的时候,判断邻边用的是原来的邻接列表。
private void dfs(int v, int sccid){visited[v] = sccid;for(int w: G.adj(v))if(visited[w] == -1)dfs(w, sccid);}
相关文章:
图论17-有向图的强联通分量-Kosaraju算法
文章目录 1 概念2 Kosaraju算法2.1 在图类中设计反图2.2 强连通分量的判断和普通联通分量的区别2.3 代码实现 1 概念 2 Kosaraju算法 对原图的反图进行DFS的后序遍历。 2.1 在图类中设计反图 // 重写图的构造函数public Graph(TreeSet<Integer>[] adj, boolean dire…...
ubuntu中使用 vscode 连接docker开发环境
文章目录 ubuntu中使用 vscode 连接docker开发环境步骤一:安装 Remote Development 插件步骤二:连接远程环境步骤三:开发 问题解决参考连接 ubuntu中使用 vscode 连接docker开发环境 Remote Development 是一个 Visual Studio Code 插件&…...
【广州华锐视点】海外制片人VR虚拟情景教学带来全新的学习体验
虚拟现实(Virtual Reality,简称VR)是一种利用电脑模拟产生一个三维的虚拟世界,提供用户关于视觉、听觉、触觉等感官的模拟体验的技术。随着科技的进步,VR已经被广泛应用到许多领域,包括游戏、教育、医疗、房…...
龙芯loongarch64麒麟服务器配置yum源
服务器信息: uname -a # 命令 Linux bogon 4.19.90-52.22.v2207.a.ky10.loongarch64 #1 SMP Tue Mar 14 11:18:26 CST 2023 loongarch64 loongarch64 loongarch64 GNU/Linux yum源配置: cd /etc/yum.repos.d/ vim kylin_loongarch64.repo 将下面内容拷贝…...
Centos7 单用户模式修改密码 3步搞定 666 (百分比成功)
1.第一步重新服务器 2.进入这个页面按e进入单用户模式 3.找到linux16这行 在后面添加 init/bin/bash 按ctrlx进入 4.注意是事项直接修改是报错passud: Authentication token manipulation error 需要执行权限:mount -o remount,rw /...
深度学习 机器视觉 车位识别车道线检测 - python opencv 计算机竞赛
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …...
Java主流分布式解决方案多场景设计与实战
Java的主流分布式解决方案的设计和实战涉及到多个场景,包括但不限于以下几点: 分布式缓存:在Java的分布式系统中,缓存是非常重要的一部分。常用的分布式缓存技术包括Redis、EhCache等。这些缓存技术可以用来提高系统的性能和响应…...
docker安装MongoDB数据库,并且进行密码配置
很美的一首小诗> 我在外面流浪,回来时 故乡瘦了一圈—— 墩子叔走了,门前的池水 干了一半。 屋后驼背的柳树 头发散落了一地, 老房子蹲在坟边,屋顶的白云 仍在风中奔跑。 安装配置 要在Docker中安装MongoDB并启用远程连接&…...
ssh脚本找不到命令或者执行无效的解决办法
如图:今天在编写脚本时发现的这个问题, 在排除脚本语法错误、编码格式等情况下,仍然出现“bash 。。未找到命令”的字样 解决办法: 给每台虚拟机的环境变量source一下: 命令如下 source /etc/profile或者输入 vim ~…...
2023年11月18日(星期六)骑行海囗林场公园
2023年11月18日 (星期六) 骑行海囗林场公园(赏枫树林),早8:30到9:00, 大观公园门囗集合,9:30准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东&#x…...
xss 漏洞
1、XSS类型 XSS攻击大致上分为3类: 反射型xss,DOM型xss,存储型xss。前两类为非持久性xss,后者为持久型xss。 1.1 非持久型xss: 1)反射型 XSS 攻击相对于访问者而言是一次性的,具体表现在恶意…...
一文图解爬虫_姊妹篇(spider)
—引导语 爬虫,没有一个时代比当前更重视它。一个好的爬虫似乎可以洞穿整个互联网,“来装满自己的胃”。 接上一篇:一文图解爬虫(spider) 博主已初步对爬虫的“五脏六腑”进行了解剖。虽然俗称“爬虫”,但窃…...
【vue实战项目】通用管理系统:api封装、404页
前言 本文为博主的vue实战小项目系列中的第三篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装to…...
R语言编写代码示例
R语言编写的爬虫程序,使用了requests库来发送请求,使用BeautifulSoup库来解析HTML。 r # 第一步,安装必要的库 install.packages("xml2") install.packages("requests") install.packages("httr") install.pac…...
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
Platform: RK3568 OS: Android 12.0 Kernel: 4.19 Rockchip默认提供了机制来预置第三方APK, 方法很简单: 1. 在device/rockchip/rk3568创建preinstall目录(如果要可卸载,那就创建preinstall_del目录) 2. 将你要预安装的APK放进此目录即可 preinstall 不…...
数据分析场景下,企业如何做好大模型选型和落地?
在数据驱动的数字化时代,有效的数据分析已成为企业成功的关键因素。而随着大模型带来能力突破,让AI与数据分析相互结合,使分析结果更好支撑业务,促进企业内部数据价值释放,成为了当下企业用户尤为关注的话题。 如何按照…...
使用VScode编译betaflight固件--基于windows平台
使用VScode编译betaflight固件--基于windows平台 1、使用git克隆betaflight的开源代码2、betaflight的代码框架分析:3、配置编译环境:4、VScode上编译 betaflight不仅可以在LInux上进行编译也可以在Windows上编译,本文主要介绍在windows平台上…...
OkHttp网络请求读写超时
查看OkHttp的源码: OkHttpClient 的 Builder() public Builder() {...callTimeout 0;connectTimeout 10_000;readTimeout 10_000;writeTimeout 10_000;... } callTimeout:整个请求的超时时间,如果设置了这个值,则总超时时间…...
@postmapping 定义formdata传参方式
背景:feign声明接口,传对象, 但是对象那边没有用requestBody接收; 前端调它也是走的formdata,所以不改变源代码,以及补新接口的情况下,我也需要formdata传参; 不然数据传不过去会为空…...
Windows客户端开发框架WPF简介
一、WPF简介 WPF的全称是Windows Presentation Foundation,WPF是 Microsoft 提供的一种用于构建桌面应用程序的 UI 框架。它包含在 .NET Framework 中,从 .NET 3.0 版本开始就被引入。 以下是一些关于 WPF 的关键特性: 1. XAML:…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
