C#,图论与图算法,双连通图(Biconnected Components of Graph)的算法与源代码

news2024/12/28 19:18:54

1 双连通图(Biconnected Components of Graph)

如果任意两个顶点之间有两条顶点不相交的路径,则无向图称为双连通图。在双连通图中,有一个通过任意两个顶点的简单循环。

按照约定,由边连接的两个节点构成双连通图,但这并不验证上述属性。对于具有两个以上顶点的图,必须存在上述属性才能进行双连接。或者换句话说:
如果满足以下条件,则称图形为双连通:
1) 它是连接的,即可以通过一条简单的路径从其他每个顶点到达每个顶点。
2) 即使移除任何顶点,图形仍保持连接。

如果一个连通图是连通的并且没有任何连接点,那么它就是双连通的。我们主要需要检查图表中的两件事。
1) 图形已连接。
2) 图表中没有连接点。
我们从任何顶点开始进行DFS遍历。在DFS遍历中,我们检查是否有任何连接点。如果我们没有找到任何连接点,那么该图是双连接的。最后,我们需要检查是否所有顶点都可以在DFS中访问。如果所有顶点都不可到达,则图形甚至没有连接。

2 源程序

using System;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
    public partial class Graph
    {
        private void Biconnected_Components_Utility(int u, int[] disc, int[] low,ref List<Edge> st, int[] parent)
        {
            disc[u] = low[u] = ++time;
            int children = 0;

            foreach (int it in Adjacency[u])
            {
                int v = it;

                if (disc[v] == -1)
                {
                    children++;
                    parent[v] = u;

                    st.Add(new Edge(u, v));
                    Biconnected_Components_Utility(v, disc, low,ref st, pa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1520726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

原生微信小程序代码转uniapp代码 插件

一、安装依赖 npm install miniprogram-to-uniapp -g 继续在命令行里&#xff0c;运行【 wtu -V 】&#xff0c;查看版本号&#xff0c;执行结果如下&#xff1a; 二、使用插件 wtu -i "这里写你的微信小程序项目路径" 如&#xff1a;【wtu -i "D:\Desktop\…

【PyTorch】基础学习:在Pycharm等IDE中打印或查看Pytorch版本信息

【PyTorch】基础学习&#xff1a;在Pycharm等IDE中打印或查看Pytorch版本信息 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1…

【C++】实现红黑树

目录 一、认识红黑树1.1 概念1.2 定义 二、实现红黑树2.1 插入2.2 与AVL树对比 一、认识红黑树 1.1 概念 红黑树是一个二叉搜索树&#xff0c;与AVL树相比&#xff0c;红黑树不再使用平衡因子来控制树的左右子树高度差&#xff0c;而是用颜色来控制平衡&#xff0c;颜色为红色…

52 硬中断的实现

前言 呵呵 中断机制 也是内核中很常见的机制了 中断机制是现代计算机系统中的基本机制之一&#xff0c;它在系统中起着通信网络的作用&#xff0c;以协调系统对各种外部事件的响应和处理&#xff0c;中断是实现多道程序设计的必要条件&#xff0c;中断是CPU 对系统发生的某个…

C#,入门教程(27)——应用程序(Application)的基础知识

上一篇: C#,入门教程(26)——数据的基本概念与使用方法https://blog.csdn.net/beijinghorn/article/details/124952589 一、什么是应用程序 Application? 应用程序是编程的结果。一般把代码经过编译(等)过程,最终形成的可执行 或 可再用 的文件称为应用程序。可执行文…

cool 中的Midway ----node.js的TypeORM的使用

1.介绍 TypeORM | Midway TypeORM 是 node.js 现有社区最成熟的对象关系映射器&#xff08;ORM &#xff09;。本文介绍如何在 Midway 中使用 TypeORM 相关信息&#xff1a; 描述可用于标准项目✅可用于 Serverless✅可用于一体化✅包含独立主框架❌包含独立日志❌ 和老写…

Docker入门一(Docker介绍、Docker整体结构、Docker安装、镜像、容器、Docker的容器与镜像)

文章目录 一、Docker介绍1.什么是虚拟化2.虚拟化模块3.docker是什么4.docker平台介绍5.为什么使用docker6.docker主要解决的问题 二、docker整体结构1.Docker引擎介绍&#xff08;Docker Engine&#xff09;2.Docker结构概览介绍3.Docker底层技术 三、docker安装1.Docker-CE和D…

【java开发者工具】IDEA(java编程语言开发的集成环境)带你了解背后故事与基础操作指南

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 1.&#x1f34e; IDEA介绍 IDEA 全称 IntelliJ IDEA&#xff0c;是java编程语言的集成开…

202109青少年软件编程(图形化) 等级考试试卷(二级)

第1题:【 单选题】 执行下图所示程序, 舞台上的角色?( ) A:在 1 秒内滑行到随机位置 B:不断地重复滑行到随机位置 C:只有按下空格键的时候, 才会滑行到随机位置 D:只有按下空格键以外键的时候, 才会滑行到随机位置 【正确答案】: C 【试题解析】 : 第2题:【 单…

力扣简单串题:转换成小写字母

char* toLowerCase(char* s) {if(sNULL){return NULL;}for(int x0;x<strlen(s);x){if(s[x]>A&&s[x]<Z){s[x]s[x]-Aa;}}return s; }

高速电路顶级会议DesignCon 2021年会议总结和论文资料分享

DesignCon2021基本介绍 DesignCon 2021是一个涉及设计、创新和技术的年度会议&#xff0c;于2021年在美国加利福尼亚州举行。以下是该会议的一些重要主题和亮点&#xff1a; 人工智能和机器学习&#xff1a;会议探讨了人工智能和机器学习如何改变设计过程&#xff0c;以及设计…

二,几何相交---4,BO算法---(3)数据结构

数据结构分两块&#xff0c;一个是某一时间状态的局部相交线段。一个是事件队列&#xff0c;是某一时刻局部相交线段的集合。

WRF模型运行教程(ububtu系统)--III.运行WRF模型(官网案例)

零、创建DATA目录 # 1.创建一个DATA目录用于存放数据&#xff08;一般为fnl数据&#xff0c;放在Build_WRF目录下&#xff09;。 mkdir DATA # 2.进入 DATA cd DATA 一、WPS预处理 在模拟之前先确定模拟域&#xff08;即模拟范围&#xff09;,并进行数据预处理&#xff08…

防范服务器被攻击:查询IP地址的重要性与方法

在当今数字化时代&#xff0c;服务器扮演着重要的角色&#xff0c;为企业、组织和个人提供各种网络服务。然而&#xff0c;服务器也成为了网络攻击者的目标之一&#xff0c;可能面临各种安全威胁&#xff0c;例如DDoS攻击、恶意软件攻击、数据泄露等。为了有效地防范服务器被攻…

2024.3.11 训练记录(14)

继续补题 文章目录 ICPC 2018青岛I Soldier GameICPC 2018青岛K Airdrop ICPC 2018青岛I Soldier Game 题目链接 线段树 果然稍微复杂一点的线段树就很难实现啊&#xff0c;不看题解根本没反应过来是线段树 struct Node {int l, r, lb, rb, nb, b; } tr[N * 4];其中&#x…

从零开始利用MATLAB进行FPGA设计(三)将Simulink模型转化为定点数据类型

文章灵感来源于MATLAB官方免费教程&#xff1a;HDL Coder Self-Guided Tutorial 考虑到MATLAB官网的英文看着慢&#xff0c;再加上视频讲解老印浓浓的咖喱味&#xff0c;我决定记录利用MATLAB&Simulink&SystemGenerator进行FPGA数字信号处理的学习过程。 往期回顾&am…

电脑文件守护者:揭秘文件自动备份的重要性与实用方案

在信息爆炸的时代&#xff0c;电脑已成为我们生活和工作中不可或缺的重要工具。而存储在电脑中的文件&#xff0c;无论是工作文档、学习资料还是个人照片&#xff0c;都承载着我们的珍贵记忆和辛勤付出。然而&#xff0c;电脑故障、病毒感染、人为误操作等因素都可能导致文件丢…

Chrome的V8引擎 和操作系统交互介绍

Chrome的V8引擎是一个用C编写的开源JavaScript和WebAssembly引擎&#xff0c;它被用于Chrome浏览器中&#xff0c;以解释和执行JavaScript代码。V8引擎将JavaScript代码转换为机器代码&#xff0c;这使得JavaScript能够以接近本地代码的速度运行。 V8引擎与操作系统的交互主要体…

力扣大厂热门面试算法题 30-32

30. 串联所有单词的子串&#xff0c;31. 下一个排列 &#xff0c;32. 最长有效括号&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.15 可通过leetcode所有测试用例。 目录 30. 串联所有单词的子串 解题思路 完整代码 Java …