当前位置:网站首页>无向图的桥
无向图的桥
2022-07-02 09:46:00 【chengqiuming】
一 点睛
时间戳:dfn[u] 表示节点 u 深度优先遍历的序号。
追溯点:low[u]表示节点u或u的子孙能通过非父子追溯到dfn最小节点的序号,即回到最早的过去。
二 举例
初始时,dfn[u]=low[u],如果该节点的邻节点未被访问,则一直进行深度优先遍历,1-2-3-5-6-4,此时 4 的邻接点 1 已被访问,且 1 不是 4 的父节点,4 的父节点是6(深度优先搜索树上的父节点)。

节点 4 能回到最早的节点是节点1(dfn=1),因此low[4]=min(low[4],dfn[1])=1,返回时,更新low[6]=min(low[6],low[4])=1。更新路径上所有祖先节点的 low 值,因为子孙能回到的追溯点,其祖先也能回到。

三 无向图的桥
桥判定法则:无向边 x-y 是桥,当且仅当搜索树上存在一个节点 y,满足 low[y] > dfn[x]。
也就是说,如果孩子的 low 值比自己大,则从该节点到这个孩子的边为桥。在上图中,边5-7中,5的子节点为7,满足 low[7]>dfn[5],因此 5-7 为桥。
四 代码
package graph.tarjanbridge;
import java.util.Arrays;
import java.util.Scanner;
public class TarjanBridge {
static int SIZE = 100010;
static int head[] = new int[SIZE], to[] = new int[SIZE << 1], next[] = new int[SIZE << 1];
static int cnt = 0;
static void addEdge(int x, int y) {
to[cnt] = y;
next[cnt] = head[x];
head[x] = cnt++;
to[cnt] = x;
next[cnt] = head[y];
head[y] = cnt++;
}
static int dfn[] = new int[SIZE], low[] = new int[SIZE];
static int index;
static boolean bridge[] = new boolean[SIZE << 1];
static void tarjan(int x, int edge) {
dfn[x] = low[x] = ++index;
for (int i = head[x]; i >= 0; i = next[i]) {
int y = to[i];
if (dfn[y] == 0) {
tarjan(y, i);
low[x] = Math.min(low[x], low[y]);
if (dfn[x] < low[y])
bridge[i] = bridge[i ^ 1] = true;
} else if (i != (edge ^ 1))
low[x] = Math.min(low[x], dfn[y]);
}
}
static void init() {
Arrays.fill(head, -1);
cnt = 0;
}
static int n, m;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
init();
for (int i = 0; i < m; i++)
addEdge(sc.nextInt(), sc.nextInt());
for (int i = 1; i <= n; i++)
if (dfn[i] == 0)
tarjan(i, -1);
for (int i = 1; i < cnt; i += 2)
if (bridge[i])
System.out.println(to[i ^ 1] + " " + to[i]);
}
}五 测试
![]()
边栏推荐
- About wechat enterprise payment to change x509certificate2 read certificate information, publish to the server can not access the solution
- Jerry's watch gets the default ringtone selection list [article]
- [opencv learning] [moving object detection]
- Unity SKFramework框架(二十一)、Texture Filter 贴图资源筛选工具
- 获取文件版权信息
- [opencv learning] [common image convolution kernel]
- VIM super practical guide collection of this one is enough
- [opencv learning] [template matching]
- The coloring method determines the bipartite graph acwing 860 Chromatic judgement bipartite graph
- Efficiency comparison between ArrayList and LinkedList
猜你喜欢

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

Linear DP acwing 902 Shortest editing distance

Js10day (API phased completion, regular expression introduction, custom attributes, filtering sensitive word cases, registration module verification cases)

Js8day (rolling event (scroll family), offset family, client family, carousel map case (to be done))

Efficiency comparison between ArrayList and LinkedList

架构师必须了解的 5 种最佳软件架构模式

Analog to digital converter (ADC) ade7913ariz is specially designed for three-phase energy metering applications

Direct control PTZ PTZ PTZ PTZ camera debugging (c)

net share

Day4 operator, self increasing, self decreasing, logical operator, bit operation, binary conversion decimal, ternary operator, package mechanism, document comment
随机推荐
阿里初面被两道编程题给干掉,再次内推终上岸(已拿电子offer)
Ltc3307ahv meets EMI standard, step-down converter qca7005-al33 phy
Apply lnk306gn-tl converter, non isolated power supply
Lucky numbers in the [leetcode daily question] matrix
Js8day (rolling event (scroll family), offset family, client family, carousel map case (to be done))
Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本
West digital decided to raise the price of flash memory products immediately after the factory was polluted by materials
Linear DP acwing 896 Longest ascending subsequence II
Modular commonjs es module
Std:: vector batch import fast de duplication method
嵌入式软件开发
Use MySQL events to regularly perform post seven world line tasks
PR usage skills, how to use PR to watermark?
Jerry's weather direction coding table [chapter]
[opencv learning] [image filtering]
传感器 ADXL335BCPZ-RL7 3轴 加速度计 符合 RoHS/WEEE
[opencv learning] [contour detection]
spfa AcWing 851. SPFA finding the shortest path
LTC3307AHV 符合EMI标准,降压转换器 QCA7005-AL33 PHY
Js10day (API phased completion, regular expression introduction, custom attributes, filtering sensitive word cases, registration module verification cases)