图论 极大强连通分支

本文介绍了如何在有向图中寻找极大强连通分支的算法,通过从图中任意节点开始,逐步扩展包含所有互相可达节点的集合,直到所有节点都被覆盖。算法包括标记节点、遍历边、更新点集等步骤,最终得到的点集即为一个极大强连通分支。
摘要由CSDN通过智能技术生成

发现在有向图中极大强连通分支的另一种求法:


算法思想:从图中任意取一个点,将所有与该点可以互通的点形成一个点集,加上该点,以及这些点之间的边就是图的一个极大强连通分支;接下来,从图中继续取点,重复同样的操作,直到点都被取完为止。

如果a与点b互通,那么以a为边的尾,可以通到b,而且以b为头;并且以a为头,并且存在通路,以b为尾;


算法步骤:

1.从图中任取一点没有被标记成集的点a;

2.将a标记成点集的一点,标记成要访问的点;

3.将所有与a有边,且以a为尾的点(未标记过的点)标记成要访问;

4.a所有的边都遍历后,将a标记成已访问,继续遍历点集中其他标记成要访问的点,直到所有的点都已访问过;

5.按上述方法标记以a为首的点;

6.在所有标记成以a为首,以及以a为尾的点中,找出所有既标记成以a为首的点,也标记成以a为尾的点,这样的点集加上点a就是一个极大强连通分支;

7.回到1,直到图中的点都被标记为止。


代码:


#include<iostream>
using namespace std;
struct node{
       int start;
       int end;
       };
node ver[100];
int point
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值