学习的这一篇:https://www.byvoid.com/blog/biconnect

割顶:对于无向图G,如果删除某个点u后,连通分量数目增加,称u为图的关节点或者割顶

u为割顶的条件:

(1)u不为树根,以u的任一子节点为根的子树中没有一个点有返回u的祖先的反向边(返祖边)

(2)u为树根,且u有多于一个子树

紫书上有证明

即为,祖先与每一棵子树之间都有返祖边的话(即,删除u点之后,以v为根的整棵子树都可以通过这条返祖边连回到f),该点不是割顶,如果祖先与它的其中一棵子树缺少返祖边的话,那么这个点就是割顶

实现过程

(1)先链式前向星建图

(2)dfs

(3)定义dfn(u)为u在搜索中遍历到的序号      定义low(u)为u或u的子树能通过非父子边追溯到的最早的节点

low(u)=min{dfn(u),

dfn(v)//(u,v)为返祖边,等价于dfn(v)<dfn(u),且v不是u的父亲节点

low(v)//(u,v)为树枝边(父子边)}

(4)当dfn(u)<=low(v)的时候,u为割顶

代码学习的这一篇

http://www.cnblogs.com/naturepengchen/articles/4053890.html

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; int first[maxn],next[maxn],ver[maxn];
int ecnt,tot;
int low[maxn],iscut[maxn],dfn[maxn]; void dfs(int p,int pre){
low[p]=dfn[p]=++tot;
int son=; for(int i=first[p];i!=-;i=next[i]){
int v=ver[i];
if(!dfn[v]){
++son;
dfs(v,p);
low[p]=min(low[p],low[v]);
if(low[v]>=dfn[p]) iscut[p]=;
} else if(dfn[v]<dfn[p]&&v!=pre) {//用返祖边更新low函数
low[p]=min(low[p],dfn[v]);
}
}
if(pre<&&son==) iscut[p]=;
} void addedges(int u,int v){
next[++ecnt]=first[u];
ver[ecnt]=v;
first[u]=ecnt;
} void init(){
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(iscut,,sizeof(iscut));
memset(first,-,sizeof(first)); ecnt=;tot=;
} int main(){
int a,b,n;
char c;
while(scanf("%d",&n)!=EOF&&n){
init();
while(scanf("%d",&a)!=EOF&&a){
while(scanf("%d%c",&b,&c)!=EOF){
addedges(a,b);
addedges(b,a);
if(c=='\n') break;
}
}
dfs(,-);
int ans=;
for(int i=;i<=n;i++)
ans+=iscut[i]; printf("%d\n",ans);
}
return ;
}

POJ 1144 Network【割顶】的更多相关文章

  1. poj 1144 Network 图的割顶判断模板

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8797   Accepted: 4116 Descripti ...

  2. POJ 1144 Network(无向图的割顶和桥模板题)

    http://poj.org/problem?id=1144 题意: 给出图,求割点数. 思路: 关于无向图的割顶和桥,这篇博客写的挺不错,有不懂的可以去看一下http://blog.csdn.net ...

  3. 图论(无向图的割顶):POJ 1144 Network

    Network   Description A Telephone Line Company (TLC) is establishing a new telephone cable network. ...

  4. poj 1144 Network(无向图求割顶数)

    题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...

  5. POJ 1144 Network(Tarjan求割点)

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12707   Accepted: 5835 Descript ...

  6. POJ 1144 Network(无向图连通分量求割点)

    题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...

  7. poj 1144 Network(割点)

    题目链接: http://poj.org/problem?id=1144 思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| ...

  8. POJ 1144 Network(割点)

    Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...

  9. poj 1144 Network 【求一个网络的割点的个数 矩阵建图+模板应用】

    题目地址:http://poj.org/problem?id=1144 题目:输入一个n,代表有n个节点(如果n==0就结束程序运行). 在当下n的这一组数据,可能会有若干行数据,每行先输入一个节点a ...

随机推荐

  1. 《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)

    1.UNIX系统口令文件包括了下图所看到的的各字段,这些字段包括在<pwd.h>中定义的passwd结构体中 POSIX定义了两个获取口令文件项的函数. 在给出用户登录名或用户ID后.这两 ...

  2. oracle 下操作blob字段是否会产生大量redo

    操作blob字段是否会产生大量redo,答案是不会.以下来做一个实验,測试数据库版本号是11.2.0.1.0: --创建一张表做測试之用 create table test_blob (   id n ...

  3. DGA ngram kmeans+TSNE用于绘图

    # -*- coding:utf-8 -*- import sys import re import numpy as np from sklearn.externals import joblib ...

  4. springboot shiro 多realm配置认证、授权

    shiro进行登录认证和权限管理的实现.其中需求涉及使用两个角色分别是:门店,公司.现在要两者实现分开登录.即需要两个Realm——MyShiroRealmSHOP和MyShiroRealmCOMPA ...

  5. java 后台实现ajax post跨域请求传递json格式数据获取json数据问题

    参考大神:http://blog.csdn.net/chunqiuwei/article/details/19924821 java后台: public String ajaxProxy(Intege ...

  6. (转载) Android开发时,那些相见恨晚的工具或网站!

    huangmindong的专栏       目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选      程序员8月书讯      项目管理+代码托管+文档协作,开发更流畅 Android ...

  7. proxy in java

    [Static] IFeature.java ImpicateF.java Runport.java StaticProxy.java IFeature.java package UProxy.sta ...

  8. CF 287(div 2) B Amr and Pins

    解题思路:一开始自己想的是找出每一次旋转所得到的圆心轨迹,将想要旋转到的点代入该圆心轨迹的方程,如果相等,则跳出循环,如果不相等,则接着进行下一次旋转.后来看了题解,发现,它的旋转可以是任意角度的,所 ...

  9. 比较好的Dapper封装的仓储实现类 来源:https://www.cnblogs.com/liuchang/articles/4220671.html

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  10. canvas 连线曲线图封装

    $.fn.hChart=function (opt) { var setting=$.extend({ className:'', data:[] },opt); var tbody=this; va ...