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

图论(强联通分量)

在图论中,特别是在讨论有向图(Directed Graph)时,我们常常需要了解图的结构特性,比如强联通分量(Strongly Connected Components, SCC)。了解强联通分量中的各种边对于理解图的整体结构以及某些算法(如Tarjan's算法或Kosaraju's算法)是非常重要的。以下是对强联通分量及其边类型的解释:

强联通分量(SCC)

强联通分量是一个子图,其中每对顶点之间都有路径相互可达。换句话说,一个强联通分量内的任意两个顶点 u 和 v 都满足 u 到 v 和 v 到 u 之间存在路径。

边的分类

板子如下

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
vector<int> e[N];       // 存储图的邻接表
int dfn[N], low[N];     // 存储每个节点的时间戳和最小到达时间
bool ins[N];            // 标记节点是否在栈中
int idx, bel[N], cnt;   // 时间戳、节点所属的强联通分量编号、强联通分量计数
stack<int> stk;         // 用于 Tarjan 算法的栈
vector<vector<int>> scc;// 存储所有的强联通分量
int n, m;               // 节点数和边数void dfs(int u) {dfn[u] = low[u] = ++idx; // 初始化时间戳ins[u] = true;           // 标记节点在栈中stk.push(u);             // 将节点压入栈中for (auto v : e[u]) {    // 遍历节点 u 的所有邻接点 vif (!dfn[v]) {       // 如果节点 v 尚未访问dfs(v);          // 递归访问节点 vlow[u] = min(low[u], low[v]); // 更新节点 u 的最小到达时间} else if (ins[v]) { // 如果节点 v 在栈中low[u] = min(low[u], dfn[v]); // 更新节点 u 的最小到达时间}}if (dfn[u] == low[u]) {  // 如果节点 u 是强联通分量的根节点vector<int> c;       // 创建一个新的强联通分量++cnt;while (1) {int v = stk.top(); // 弹出栈顶节点c.push_back(v);    // 将节点添加到当前强联通分量中ins[v] = false;    // 标记节点不在栈中bel[v] = cnt;      // 标记节点所属的强联通分量编号stk.pop();         // 弹出栈顶节点if (u == v) break; // 如果节点 u 是栈顶节点,结束循环}sort(c.begin(), c.end()); // 对强联通分量内的节点排序scc.push_back(c);         // 将强联通分量添加到结果中}
}int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for (int i = 1; i <= m; i++) {int u, v;cin >> u >> v;e[u].push_back(v); // 构建邻接表}for (int i = 1; i <= n; i++) {if (!dfn[i]) dfs(i); // 对每个未访问的节点进行 DFS}sort(scc.begin(), scc.end()); // 对所有的强联通分量排序cout << cnt << endl;          // 输出强联通分量的数量for (auto c : scc) {          // 输出每个强联通分量for (auto u : c) {cout << u << " ";}cout << endl;}return 0;
}

题目链接 洛谷 B3609

参考文献 scc

相关文章:

图论(强联通分量)

在图论中&#xff0c;特别是在讨论有向图&#xff08;Directed Graph&#xff09;时&#xff0c;我们常常需要了解图的结构特性&#xff0c;比如强联通分量&#xff08;Strongly Connected Components, SCC&#xff09;。了解强联通分量中的各种边对于理解图的整体结构以及某些…...

LLaMA- Adapter V2: Parameter-Efficient Visual Instruction Model

发表时间&#xff1a;28 Apr 2023 论文链接&#xff1a;https://arxiv.org/pdf/2304.15010 作者单位&#xff1a; Shanghai Artificial Intelligence Laboratory Motivation&#xff1a;如何有效地将大型语言模型 (LLM) 转换为指令追随者最近是一个流行的研究方向&#xff0…...

【爬虫实战】利用代理爬取Temu电商数据

引言 在行业竞争激烈、市场变化快速的跨境电商领域&#xff0c;数据采集可以帮助企业深入了解客户需求和行为&#xff0c;分析市场趋势和竞争情况&#xff0c;从而优化产品和服务&#xff0c;提高客户满意度和忠诚度。同时&#xff0c;数据采集可以实时跟踪库存水平和销售情况&…...

【MATLAB源码-第244期】基于MATLAB的BP神经网络语音特征信号分类,输出原信号与预测信号对比图以及预测误差和正确率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 BP神经网络&#xff08;Back Propagation Neural Network&#xff09;是一种广泛应用于模式识别和分类问题的人工神经网络。在本次语音特征信号分类任务中&#xff0c;我们将详细描述如何通过BP神经网络实现对四类语音信号的…...

HarmonyOS 习题(二)

1、在类Web开发范式自定义组件创建后&#xff0c;加入到Page组件树时&#xff0c;会触发以下哪一项回调。 A&#xff09;Onlnit B&#xff09;OnAttached C&#xff09;OnLayoutReady D&#xff09;OnDetached 答案&#xff1a;B 分析: onlnit:自定义组件初始化生命周期回调&a…...

如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!

整体部署流程如下&#xff1a; 1.获取源码/前后端分离&#xff0c;前端Uniapp vue2.0 后端thinkphp6&#xff08;Gitee直达&#xff09; 2.服务器安装宝塔&#xff08;已有宝塔请安装环境&#xff0c;Nginx或者Apache/ php 7.3/ mysql 5.6 &#xff09; 3.进入宝塔添加网站&…...

Delphi5实现身份证检验(DLL版)

效果图 身份证行政区划分代码 识别归属地需要行政区划分&#xff0c;都在data.txt文档里面了。 最后一位校验码 根据上面的原理编写程序即可。 {这个函数计算最后一位检验码是否正确&#xff0c;ID是18位身份证号字符串&#xff0c;结果返回字符串} function IDcheck(ID:stri…...

linux下的C++程序

1.安装g编译环境&#xff08;c&#xff09;、gcc编译环境&#xff08;c语言&#xff09; sudo yum install gcc或者gcc-c //安装gcc/g编译(用管理员权限弄&#xff09; 验证是否安装成功 gcc或者g --version //如果显示版本号&#xff0c;则表示安装成功 sudo yum remove g…...

selfAttention 中的dk到底是什么

在Self-Attention机制中&#xff0c;为什么需要对 Q K T QK^T QKT 的结果进行缩放&#xff0c;除以 d k \sqrt{d_k} dk​ ​。以下是详细解释&#xff1a; 缩放的原因 除以 d k \sqrt{d_k} dk​ ​ 的原因有两个&#xff1a; 防止输入过大&#xff1a;如果不缩放&#xf…...

安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi

文章目录 1、安装 mongodb-compass-1.40.2-win32-x64.msi2、安装后配置链接地址&#xff1a; 1、安装 mongodb-compass-1.40.2-win32-x64.msi 2、安装后配置链接地址&#xff1a;...

一行命令搞定内网穿透

一行命令搞定内网穿透 一款开源免费的内网穿透工具&#xff1a;localtunnel &#xff0c;基于 nodejs 实现&#xff0c;无需修改 DNS 和防火墙设置&#xff0c;方便快捷的将内网服务暴露到外网&#xff0c;为开发人员、测试人员以及需要分享本地项目的人提供实时的公网访问方式…...

C语言——扫雷游戏

扫雷游戏通常是一个由方格组成的区域内进行的&#xff0c;其中随机分布着一定数量的地雷 。玩家的目标是通过点击方格来标记出所有地雷的位置&#xff0c;同时避免自己点到地雷而导致游戏失败。游戏开始时&#xff0c;玩家通常只能看到一部分方格&#xff0c;而其余的方格则需要…...

【LLM】-16-评估LLM-与标准答案的差距

目录 1、评估回答是否正确 1.1、util_zh 1.2、eval_zh 1.3、评估 2、评估生成答案与标准答案的差距 2.1、eval_zh2 2.2、评估 即使没有提供的理想答案&#xff0c;只要能制定一个评估标准&#xff0c;就可以使用一个 LLM 来评估另一个 LLM 的输出。 如果可以提供理想答…...

WeNet 2.0:更高效的端到端语音识别工具包

WeNet 2.0:更高效的端到端语音识别工具包 原文链接&#xff1a;[2203.15455] WeNet 2.0: More Productive End-to-End Speech Recognition Toolkit (arxiv.org) 1.摘要 WeNet是一个开源的端到端语音识别工具包&#xff0c;WeNet 2.0在此基础上进行了四项主要更新&#xff0c…...

阿里大模型调用 = 》通义千问大语言模型

背景&#xff1a;简单的通过API或者SDK在线调用阿里云大模型&#xff08;基于百炼平台&#xff09;&#xff0c;基于在线知识库 参考地址&#xff1a;安装阿里云百炼SDK_大模型服务平台百炼(Model Studio)-阿里云帮助中心 (aliyun.com) 1、获取API-KEY 当您通过API/SDK调用大模…...

idea使用free流程,2024idea免费使用

1.先到官网下载&#xff0c;这里选择win系统的&#xff0c;点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好&#xff0c;安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…...

算法_链表专题---持续更新

文章目录 前言两数相加题目要求题目解析代码如下 两两交换链表中的结点题目要求题目解析代码如下 重排链表题目要求题目解析代码如下 合并K个升序链表题目要求题目解析 K个一组翻转链表题目要求题目解析代码如下 前言 本文将记录leetcode链表算法题解&#xff0c;包含题目有&a…...

在Windows MFC\C++编程中,如何使用OnCopyData函数

在C中&#xff0c;OnCopyData 函数通常不是标准C库的一部分&#xff0c;而是与特定的图形用户界面&#xff08;GUI&#xff09;框架相关联&#xff0c;如Microsoft Foundation Classes (MFC) 或 Windows API 编程。在MFC应用程序中&#xff0c;OnCopyData 是用于处理来自其他应…...

【Qt】项目代码

main.cpp文件 argc&#xff1a;命令行参数个数。*argv[ ]&#xff1a;每一个命令行参数的内容。main的形参就是命令行参数。QApplication a(argc, argv) 编写一个Qt的图形化界面程序&#xff0c;一定需要QApplication对象。 widget w; 在创建项目的时候&#xff0c;勾选widg…...

MySQL中常用工具

MySQL自带的系统数据库 常用工具 MySQL mysqladmin mysqlbinlog mysqldump mysqlimport/source mysqlimport只能导入文本文件&#xff0c;不能导入sql文件...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...

Unity-ECS详解

今天我们来了解Unity最先进的技术——ECS架构&#xff08;EntityComponentSystem&#xff09;。 Unity官方下有源码&#xff0c;我们下载源码后来学习。 ECS 与OOP&#xff08;Object-Oriented Programming&#xff09;对应&#xff0c;ECS是一种完全不同的编程范式与数据架构…...