SGOI13之《旅游航道》解题报告
   

[问题]
  给出一个连通的无向图,求图的桥的数目。

[分析]
  我们从图的一个顶点开始,进行深度优先遍历,于是,我们得到一棵树。对于树上的某个节点A,如果在图中存在某边e = (A,B),满足点B已经被访问过且B不是A的父亲,这就意味着,我们找到了从A到B的一个圈。圈上的点一定不是桥,于是我们标记这条圈上的点,并收缩。继续。最后,任何非根的且未被访问的点及其父亲之间的边是一座桥。

  标记圈和收缩的过程如下:
  for (p = A; depth[p] > depth[B]; p = parent[p]) mark[p] = 1;
  B' = p;
  for (p = A; p != B'; p = q) {
   q = parent[p];
   parent[p] = B';
  }

算法的复杂度为O(V + E log E)。

   

 
网站导航 | 关于曙光 | 联系我们 | 请提意见
Copyright © FuJian Sunshine Educational Info. Co.,Ltd.
福建曙光教育资讯有限公司 版权所有