图论,求有向图的强连通分支

该博客介绍了如何解决图论问题中关于有向图的强连通分支。通过给出的PKU题目,展示了如何利用邻接链表和邻接矩阵来表示图,并设计算法找出图的底部,即所有可达节点。文章提供了Java代码实现,包括深度优先搜索(DFS)的两个版本,分别用于确定顶点的拓扑排序和找到强连通分支。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求有向图的强联通分支十一个典型的图论题目。
本来想把他写成一个通用的算法,但是发现有很多不太好处理的地方,比如选用邻接链表还是选用邻接矩阵来表示图,有的情况是不一样的,再者很难把强联通分支缩点,并且再构建一个图出来,主要是强联通分支之间的边表示的时候要考虑一些情况,比如边的费用什么的。
但是也可以尝试做一个稍微通用的一点的算法,就是把所有点属于那个强连通标识(用id[i]表示)出来。
如果对于原图中两点i,j。 如果id[i]==id[j],则他们在一个强联通分支中,否则他们一定不在一个强联通分支中。至于确定两个不同强连通分支之间的关系,就留给客户去做,就好了。
先给出pku的一个题目,使用了求强联通分支的技术。

The Bottom of a Graph

Description
We will use the following (standard) definitions from graph theory. Let V be a nonempty and finite set, its elements being called vertices (or nodes). Let E be a subset of the Cartesian product V×V, its elements being called edges. Then G=(V,E) is called a directed graph.
Let n be a positive integer, and let p=(e1,...,en) be a sequence of length n of edges ei∈E such that ei=(vi,vi+1) for a sequence of vertices (v1,...,vn+1). Then p is called a path from vertex v1 to vertex vn+1 in G and we say that vn+1 is reachable from v1, writing (v1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值