数据结构——图 连通图与连通分量

note: 连通是无向图中的概念

接下来介绍两个算法:判断图的连通性与标记连通分量。

1. 判断一个图是否连通. Determine whether an undirected graph is connected


class Undirected : virtual public Network {
 public:
  bool Connected();
};

bool Undirected::Connect()
{// Return true iff graph is connected.
 
 int n = Vertices();
 
 // set all vertices as not reached
 int *reach = new int [n+1];
 for (int i = 1; i <= n; i++)
  reach[i] = 0;

 //mark vertices reachable from vertex 1
 DFS(1, reach, 1);

 //check if all vertices marked
 for (int i = 1; i<= n; i++)
  if (!reach[i]) return false;
 return true;
}

2.Component labeling. 标记连通分量

下面这个程序的复杂性是O(n^2); 用邻接链表描述图时,是O(n+e)

int Undirected::LabelComponents(int L[])
{// Label the components of the graph.
 //Return the number of components and set L[1:n] to repre
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值