Skip to content

Commit

Permalink
modify code
Browse files Browse the repository at this point in the history
  • Loading branch information
algorithmzuo committed Mar 3, 2022
1 parent 29f105f commit fc0122a
Showing 1 changed file with 46 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,52 @@ leetcode链接 : https://leetcode.com/problems/groups-of-strings/



第014节 2022年3月第1周流行算法题目解析

强连通分量的原理
1,理解什么是dfn序号
2,理解什么是low序号
3,理解算法流程中,节点的三种状态:未遍历、遍历了未结算、遍历了已结算
4,理解什么是scc序号

tarjen(cur)算法求强连通分量流程:
1,遍历到一个“未遍历”状态的节点cur
2,给cur节点dfn编号和low编号,初始时low(cur) = dfn(cur)
3,将cur标记为“遍历了未结算”状态,并放入栈中
4,对于cur的每个孩子q,做如下两步操作:
1)如果q未遍历,执行tarjen(u);否则,不执行tarjen(u)
2)步骤1)后,q就遍历过了,如果是“遍历未结算”,令low(cur) = min ( low(cur), low(q));
如果是“已结算”,什么也不做
5,如果经历完步骤4,依然发现low(cur) = dfn(cur),
说明cur是一个强连通分量的头节点,分配给cur一个scc号,
并去结算cur及其cur之下的点(利用栈)

强连通分量代码解析

N个学校之间有单向的网络,每个学校得到一套软件后,
可以通过单向网络向周边的学校传输
问题1:
初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件
问题2:
至少需要添加几条传输线路(边),使任意向一个学校发放软件后,
经过若干次传送,网络内所有的学校最终都能得到软件
2 <= N <= 1000

A -> B,表示A认为B是红人
A -> B -> C,表示A认为B是红人,B认为C是红人,
规定“认为”关系有传递性,所以A也认为C是红人
给定一张有向图,方式是给定M个有序对(A, B)
(A, B)表示A认为B是红人,该关系具有传递性
给定的有序对中可能包含(A, B)和(B, C),但不包含(A,C)
求被其他所有人认为是红人的总数

在一个地图上有若干个炸弹,每个炸弹会呈现十字型引爆
每个炸弹都有其当量值,这个值决定了这个炸弹的爆炸半径
如果一个炸弹被引爆时,有其它炸弹在其爆炸半径内,
那么其它炸弹也会爆炸
请问使地图上所有炸弹爆炸所需的最少人为引爆次数。





Expand Down

0 comments on commit fc0122a

Please sign in to comment.