题目地址:POJ 1144

求割点。推断一个点是否是割点有两种推断情况:

假设u为割点,当且仅当满足以下的1条

1、假设u为树根,那么u必须有多于1棵子树

2、假设u不为树根。那么(u,v)为树枝边。当Low[v]>=DFN[u]时。

然后依据这两句来找割点就能够了。

代码例如以下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>using namespace std;
int head[200], cnt, index1, ans;
int vis[200], low[200], dfn[200], ge[200];
struct node
{int u, v, next;
}edge[2000];
void add(int u, int v)
{edge[cnt].v=v;edge[cnt].next=head[u];head[u]=cnt++;
}
void tarjan(int u, int fa)
{int son=0, i;low[u]=dfn[u]=++index1;vis[u]=1;for(i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;son++;if(!vis[v]){tarjan(v,u);low[u]=min(low[v],low[u]);if(u==1&&son>1||dfn[u]<=low[v]&&u!=1){ge[u]++;}}else if(v!=fa)low[u]=min(low[u],dfn[v]);}
}
void init()
{memset(head,-1,sizeof(head));cnt=0;index1=ans=0;memset(vis,0,sizeof(vis));memset(dfn,0,sizeof(dfn));memset(ge,0,sizeof(ge));
}
int main()
{int n, i, j, u, v;while(scanf("%d",&n)!=EOF&&n){init();while(scanf("%d",&u)!=EOF&&u){while(getchar()!='\n'){scanf("%d",&v);add(u,v);add(v,u);}}tarjan(1,-1);for(i=1;i<=n;i++){if(ge[i])ans++;}printf("%d\n",ans);}return 0;
}

POJ 1144 Network(无向图连通分量求割点)相关推荐

  1. POJ 1144 Network (求割点)

    题意: 给定一幅无向图, 求出图的割点. 割点模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 输入有点麻烦, 用stringsteam 会比较 ...

  2. POJ 1144 Network 图论

    题目地址:http://poj.org/problem?id=1144 题目大意:多组数据,每组数据以0结束,文件也以0结束.对于每组数据第一行n表示点数,接下来至多n行,每行至多n个数,第i个数表示 ...

  3. POJ 1144 Network

    无向图求割点,开始看题后不知道求什么,看了discussi才知道是求割点,然后就在网上找了找关于割点的知识.然后在http://blog.csdn.net/xinghongduo/article/de ...

  4. [UVA315]Network(tarjan, 求割点)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. uva 315 (poj 1144 求割点)

    题意:给你一张无向图,求割点的个数. 思路:输入稍微处理一下接着直接套模版. 1 #include <iostream> 2 #include <cstdio> 3 #incl ...

  6. c语言tarjan算法,无向图求割点和割边——Tarjan算法

    无向图中求割点集和割边集--Tarjan算法 割点和割边 定义 在一个无向图中,如果删除了某个顶点及与之相连的所有边,产生了一更大连通分量的子图,这样的顶点被称为割点或关节点.对于一个图的所有割点的集 ...

  7. POJ1144:Network(无向连通图求割点)

    题目:http://poj.org/problem?id=1144 求割点.判断一个点是否是割点有两种判断情况: 如果u为割点,当且仅当满足下面的1条 1.如果u为树根,那么u必须有多于1棵子树 2. ...

  8. tarjan算法与无向图的连通性(割点,桥,双连通分量,缩点)

    基本概念 给定无向连通图G = (V, E) 割点: 对于x∈V,从图中删去节点x以及所有与x关联的边之后,G分裂为两个或两个以上不相连的子图,则称x为割点 割边(桥) 若对于e∈E,从图中删去边e之 ...

  9. hdu 4587 2013南京邀请赛B题/ / 求割点后连通分量数变形。

    题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量. 思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可.算法相对简单,但是注意几个细节: 1:原图可能不连通. 2:有 ...

最新文章

  1. 太阳光是平行光吗_科普文系列活动 || 奇妙的光现象
  2. Android:客户端和服务器之间传输数据加密
  3. 如何利用 “集群流控” 保障微服务的稳定性?
  4. java文件名大小_java 比较指定文件夹内.txt文件名的大小
  5. 2005年全球H.264编解码器荟萃
  6. ThinkPHP内核仿美洽多商户多端接入无限客服系统-支持PC+WAP+公众号接入
  7. u盘锁电脑_手机空间不足?U盘来辅助,一招解决问题
  8. 电脑没声音,音频设备无法使用。扬声器安装程序unknown
  9. 塔防类游戏 ——简单的角色合并逻辑示例
  10. 12V转5V降压芯片,12V转3.3V稳压芯片电路图
  11. 【固定定位和绝对定位】
  12. 阿里云nginx服务器多站点的配置
  13. Python实现红黑树
  14. VScode 配置豆沙绿背景色(source insight同款背景色)
  15. 误删除Linux下/etc/shadow文件,linux修改密码出现Authentication token manipulation error的解决办法
  16. android+jiaozi播放器,android视频播放-饺子播放器
  17. 电脑小技巧:超级数据恢复
  18. 彩色图像--色彩空间 CIELAB、CIELUV
  19. arcgis网络分析最短距离_ArcGIS 网络分析[2.1] 最短路径
  20. 基于SSM智能停车场管理系统

热门文章

  1. java中super关键字_Java中关键字super与this的区别
  2. C语言开发windows桌面程序,开发 windows 桌面软件,现在主流用什么技术?
  3. python基本用法_python基本用法
  4. uvm 形式验证_一种基于UVM的总线验证方法与流程
  5. msf生成linux shellcode,MSF-Shellcode生成和使用
  6. case when用法java_Oracle CASE WHEN 用法介绍
  7. 关于Spring Boot WebSocket整合以及nginx配置详解
  8. 埃洛等级分系统【转自百度百科】
  9. Python爬虫_selenium
  10. Centos 配置mailx使用外部smtp发送邮件