2023/1/12总结

news2025/1/18 6:59:39

今天学习了图的割点与桥的算法

图的割点以及桥

图的割点:割点是指在无向连通图中,某点和该点连接的边去掉以后图便不再连通

在上面的图片中(上面是一个有向图,我们当作无向图即可)我们知道当我们去掉A点之后,这个图就完完全全变成了俩个部分。

图的桥:桥是指去掉某一条边之后,这个图也是不连通的一个图

上面我们可以知道A-E、E-F是桥。

这俩个,都是建立在tarjan算法之上的,建议大家先去了解tanjan算法。

割点的特点:

因为这里是无向图,所以我们不能让当前结点的儿子节点去访问自己,可以访问到自己的祖宗节点。

割点的特征是:

  1. 是根节点,且至少有俩个儿子节点
  2. 不是跟节点,但是,本节点的dfn值<=儿子节点的low值。

为什么是这个特征?

因为根节点如果没有俩个儿子节点,它去除之后,并不能把图分开,但是如果有俩个以上,就能够分开这个图。

而不是根节点的部分,如果儿子节点的low值是大于dfn的,说明儿子节点是需要通过当前节点来访问到它自己(儿子节点),而当前节点的dfn值大于等于儿子节点的low值的话,说明儿子节点  要么可以访问到更早的节点(这是大于的情况),因为在无向图中,儿子节点可以访问的更早,就说明,那个更早的节点也是可以不通过当前节点去访问儿子节点的; 要么就是儿子节点能够通过其他节点访问到当前节点(因为我们规定儿子节点是不能访问当前节点的,这是等于的情况),通常这个情况是构成了一个环路了。

桥的特征是:

儿子节点的low值大于当前节点的dfn值。

为什么是这个特征?

因为当儿子节点的low值是大于当前节点的dfn值,说明儿子节点无法通过当前节点的父节点去寻找到另外一条路径,所以当儿子节点的low值大于当前节点的dfn值时,说明当前节点到儿子节点的这条边时桥。

C代码如下:

 

#include<stdio.h>
#define N 100
int n,m,top;
int e[N][N];
int timez,dfn[N],low[N],book[N];
int father[N];
int minz(int a,int b)
{
	if(a<b) return a;
	return b;
}
int dfs(int pre,int x)
{
	dfn[x]=low[x]=++timez;
	father[x]=pre;
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		if(dfn[i]==0&&e[x][i])
		{
			dfs(x,i);
			low[x]=minz(low[x],low[i]);	
			if(j>=2) book[x]=1;
			
			if(dfn[x]<low[i]) printf("%d %d是桥\n",x,i);
		}
		else if(e[x][i]&&i!=pre)
		{
			low[x]=minz(low[x],dfn[i]);
		}
	}
	
	return 0;
}
int main()
{
	int i,j,u,v;
	puts("请输入你所需要的顶点总数:");
	scanf("%d",&n);
	puts("请输入你所需要的边的总数");
	scanf("%d",&m);
	puts("请输入边的起点、终点:");
	for(i=0;i<m;i++)
	{
		scanf("%d%d",&u,&v);
		e[u][v]=1;
		e[v][u]=1;
	}
	puts("请输入顶点:");
	scanf("%d",&top);
	dfs(0,top);
	for(i=1;i<=n;i++)
	{
		if(book[i]==1) printf("%d是割点\n",i);
	}
	return 0;
}

C++代码如下:

#include<iostream>
#include<bits/stdc++.h>

using namespace std;

const int N=100;
int n,m,top;
int e[N][N];
int timez,dfn[N],low[N],book[N];
int father[N];
int minz(int a,int b)
{
	if(a<b) return a;
	return b;
}
int dfs(int pre,int x)
{
	dfn[x]=low[x]=++timez;
	father[x]=pre;
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		if(dfn[i]==0&&e[x][i])
		{
			dfs(x,i);
			low[x]=minz(low[x],low[i]);	
			if(j>=2) book[x]=1;
			
			if(dfn[x]<low[i]) cout << x << i << "是桥\n" ;
		}
		else if(e[x][i]&&i!=pre)
		{
			low[x]=minz(low[x],dfn[i]);
		}
	}
	
	return 0;
}
int main()
{
	int i,j,u,v;
	cout << "请输入你所需要的顶点总数:" << endl;
	cin >> n ;
	cout << "请输入你所需要的边的总数" << endl;
	cin >> m ;
	cout << "请输入边的起点、终点:" << endl;
	for(i=0;i<m;i++)
	{
		cin >> u >> v;
		e[u][v]=1;
		e[v][u]=1;
	}
	cout << "请输入顶点:" << endl;
	cin >> top ;
	dfs(0,top);
	for(i=1;i<=n;i++)
	{
		if(book[i]==1) cout << i << "是割点\n" ;
	}
	return 0;
}

 

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

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

相关文章

进阶必看 | 6个让Revit建模起飞的习惯,高效就靠它

大家好&#xff0c;这里是建模助手。 相信各位都知道&#xff0c;建模助手一向以来都追求更高&#xff0c;更快&#xff0c;更强。但是有些问题&#xff0c;不是插件本身能解决的事情&#xff0c;而是项目本身的问题。 一般来说&#xff0c;当Revit项目模型大于150MB时&#…

Linux安装sonarqube(含各种错误处理)

目录 1.下载安装 2.错误处理 2.1.JDK版本不适配 2.2.can not run elasticsearch as root 1.下载安装 下载地址&#xff1a; Download | SonarQube | Sonar &#xff08;下载页面向下拉&#xff09;选择稳定版本下载。 解压后启动脚本在&#xff1a; bin/{对应操作系统}…

【dp】买卖股票的最佳时机系列题目

文章目录121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II309. 最佳买卖股票时机含冷冻期123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV121. 买卖股票的最佳时机 本题的重点是&#xff1a;只能在前面某一天买入&#xff0c;后面某一天卖出。要不就是不买入&#x…

外贸业务员怎样能提高自己的工作能力?

关于外贸业务员提高自己的工作能力&#xff0c;米贸搜整理如下&#xff0c;希望可以帮助到你&#xff1a;1.树立一个好的目标&#xff0c;并坚定不移地朝着这个目标努力。这个问题&#xff0c;无论你是新手还是有经验的外贸业务员&#xff0c;相信每个外贸业务员都或多或少的思…

K_A11_004 基于STM32等单片机采集热敏传感参数串口与OLED0.96双显示

K_A11_004 基于STM32等单片机采集热敏传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线说明1.1、STC89C52RC热敏传感模块1.2、STM32F103C8T6热敏传感模块五、基础知识学习与相关资料下…

NCS8823替代方案|CS5260Typec转VGA可替代NCS8823|低BOM成本替代NCS8823设计

NCS8823替代方案|CS5260Typec转VGA可替代NCS8823|低BOM成本替代NCS8823设计 NCS8823是一款低功耗、DisplayPort信号至VGA转换器,通过USB Type-C连接器。它是 适用于USB Type-C至VGA转换器&#xff0c;适配器、对接设备。此设备结合了基于USB Type-C的 DisplayPort接收器和VGA…

华为私有云平台FusionCompute搭建

一、FusionCompute架构 架构CNA作为虚拟化操作系统&#xff0c;VRM作为虚拟化管理平台正常主机都安装CNA&#xff0c;单独建立VRM集群作为管理集群&#xff0c;我测试环境就一台主机&#xff0c;所以CNA和VRM装在同一台主机上&#xff0c;并且用这台主机分配虚拟机进行测试。 …

前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值

作用域 作用域指&#xff1a;变量或函数的有效使用范围&#xff0c;有全局作用域与局部作用域两种。 全局变量和局部变量 全局变量&#xff1a;直接在 script 标签下声明的变量&#xff0c;任何地方都能访问&#xff0c;任何地方都能对其值进行改变。 局部变量&#xff1a;函…

CAN总线的个人理解

部分内容可以参考&#xff1a;https://blog.csdn.net/xwwwj/article/details/105372234? CAN概念简介 CAN是Controller Area Network 的缩写 CAN协议经过ISO标准化后有两个标准&#xff1a;ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通…

适合制造业的ERP推荐?使用ERP系统的好处有哪些?

对于制造型企业来说&#xff0c;除了涉及到产品的生产制造和原料采购&#xff0c;还需要管理库存、销售、财务等方方面面。制造业的ERP系统的使用&#xff0c;尤为重要。一个好的制造业的ERP系统在企业管理中起到至关重要的作用&#xff0c;针对制造业的ERP系统提供贴合行业特性…

用cmd命令窗口运行第一个java程序同时分享idea写的代码用cmd编译运行【建议收藏】

在上一篇文章https://blog.csdn.net/qq_52545155/article/details/128651296?spm1001.2014.3001.5502教大家安装了jdk版本&#xff0c;那么我们来编写一个java程序&#xff0c;通过cmd命令运行起来看看效果叭&#xff01;&#xff01;&#xff01; 一、基本代码准备 1、打开记…

超全的SQL注入姿势总结

目录 常见姿势 环境搭建 信息收集 报错注入 延时注入 布尔注入 堆叠注入 绕过方法 绕过引号 or and xor not绕过 绕过注释符 内联注释绕过 类型转换绕过 绕过 WAF绕过-应用层 常见姿势 环境搭建 use mysql; create table if not exists my_table( id int PRIMA…

HC小区管理系统安装记录一次群里小伙伴梓豪方式安装问题

记录一次群里小伙伴安装&#xff0c;供大家参考 问题排查 打开梓豪地址查看 Redis MySQL Nginx 是否启动成功&#xff0c;查看日志启动成功 MySQL正常 redis 没有报错 Nginx也正常 查看hc 是否启动成功&#xff0c;点击控制台 查看docker 发现8008 端口被占用了&#xff0c…

【异常】原来提示SocketTimeoutException:connect timed out还可能是外部因素导致

一、现象截图 一大早收到ELK的邮件提醒&#xff0c;让我来看看&#xff0c;又是哪个妖怪在作孽&#xff1f; 二、问题定位 2.1 SocketTimeoutException:connect timed out 经验告诉我&#xff0c;这个问题一般是第三方平台的问题&#xff0c;大部分原因是发起Http请求&…

惠普M329打印机更换副厂硒鼓后提示墨粉不足并无法打印

买了一个惠普M329打印机,打印效果不错,速度快,大量复印比较方便。因为最近打印和复印比较多,很快原装墨粉用完了。又买了一个副厂(带芯片)的硒鼓换上。不到一个月,又用光了,这次买了同一个副厂的硒鼓(不带芯片)。将原来的芯片(副厂的)拆下来,装在新硒鼓上。装到M3…

喜讯!华秋电子荣获千峰奖“2022年度产业互联网百强”,持续为电子产业增效降本!

12月28日&#xff0c;2022全球数字贸易大会专题活动“跨境产业互联网峰会暨2022年度千峰之夜”在武汉隆重举行&#xff0c;大会聚集了全国产业互联网、跨境电商平台、数字经济、资本市场等嘉宾&#xff0c;共同探讨产业互联网公司出海的机会和路径。 亿邦动力董事长郑敏介绍&am…

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (三)奇偶校验

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 &#xff08;三&#xff09;奇偶校验 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN博客 &#x1f9e8;未经作者允许&#xff0c;禁止转载 &#x1f511;系列专栏&#xff1a;牛客Verilog习…

房产管理系统平台架构安全需求分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

JavaAccessBridge(Java访问桥)详细介绍

Java Access Bridge 通过 Java 访问桥 API&#xff0c;您可以给使用Java应用程序编写的在windows系统上运行的图形化系统开发辅助技术应用程序。它包含本机方法&#xff0c;使您能够查看和操作有关 Java 应用程序中 GUI 元素的信息&#xff0c;这些信息将通过 Java 访问桥转发…

二维数组中各个三角形的关系,三角形的打印同理

给你一个n*n矩阵&#xff0c;按照顺序填入1到n*n的数&#xff0c;例如n5&#xff0c;该矩阵如下 (这是一个题目&#xff0c;但是我这个写法在牛客刷题中是不能正确的得分的&#xff0c;但是我找到了各个关系&#xff0c;然后分享给大家) 然后再对其进行求和处理&#xff0c;是…