摘要: 所谓关节点就是在一个连通图中删除某个顶点及其附属的边,原图变为非连通图。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点为邻接点。由深度优先生成树可得出两类关节点的特性: (1)若生成树的根有两棵或两棵以上的子树,则此根顶点必为关节点。因为图中不存在连接不同子树顶点的边,若删除此节点,则树便成为森林。 (2)若生成树中某个非叶子节点V,其某棵子树与V的祖先节点无连接,则V为关节点。因为删去v,则其子树和图的其它部分被分割开来用图说明一下吧:如上图所示,很显然去掉A或C后整个图就变成不联通了,因此A、C就是关节点。怎么用代码实现找出关节点呢?其实我们可以严格按照... 阅读全文
posted @ 2011-12-17 22:10 书山有路,学海无涯 阅读(7918) 评论(1) 推荐(1) 编辑
摘要: 题意也就是找一个网络中的关节点(割点)个数。#include<iostream>#include<cstdio>#include<cstring>using namespace std;struct node{ int i; int next;};int head[101],pre[101],low[101],ss[101],N,count,cnt;node edge[10001];int dfs(int i,int root){ int j,w,k=0; if(pre[i]==0) pre[i]=low[i]=++cnt; for(j=head[i];j; 阅读全文
posted @ 2011-12-17 19:28 书山有路,学海无涯 阅读(363) 评论(0) 推荐(0) 编辑