割点

#include<bits/stdc++.h>
#define N 100005
using namespace std;int n,cnt;
int hd[N],nxt[N<<1],to[N<<1],tot;
int dfn[N],low[N],now;
int ans[N];void add(int a,int b)
{to[++tot]=b;nxt[tot]=hd[a];hd[a]=tot;
}void tarjan(int u,int fa)
{dfn[u]=low[u]=++now;for(int i=hd[u];i;i=nxt[i]){if(!dfn[to[i]]){tarjan(to[i],u);low[u]=min(low[u],low[to[i]]);}else if(to[i]!=fa) low[u]=min(low[u],dfn[to[i]]);}if(fa==1) cnt++;else if(low[u]>=dfn[fa]) ans[fa]=1;
}int main()
{scanf("%d",&n);for(int x,y;scanf("%d",&x),x;){while(scanf("%d",&y),y) add(x,y), add(y,x);}tarjan(1,0);ans[1]=(cnt>1);for(int i=1;i<=n;i++){if(ans[i]) printf("%d ",i);}
}

#include<bits/stdc++.h>
#define N 100005
using namespace std;int hd[N],nxt[N<<2],to[N<<2],tot;
int dfn[N],low[N],now;
int ans,f[N];void add(int a,int b)
{to[++tot]=b;nxt[tot]=hd[a];hd[a]=tot;
}void tarjan(int u,int fa)
{f[u]=fa;dfn[u]=low[u]=++now;for(int i=hd[u];i;i=nxt[i]){if(!dfn[to[i]]){tarjan(to[i],u);low[u]=min(low[u],low[to[i]]);}else if(to[i]!=fa) low[u]=min(low[u],dfn[to[i]]);}
//  if(fa&&low[u]<dfn[fa]) ans++;//不能这么写
}int main()
{int n,m,x,y;scanf("%d%d",&n,&m);while(m--){scanf("%d%d",&x,&y);add(x,y), add(y,x);}tarjan(1,0);for(int i=2;i<=n;i++){if(low[i]>dfn[f[i]]) ans++;}printf("%d\n",ans);
}

无向连通图的割点和桥相关推荐

  1. POJ1523:SPF(无向连通图求割点)

    题目:http://poj.org/problem?id=1523 题目解析: 注意题目输入输入,防止PE,题目就是求割点,并问割点将这个连通图分成了几个子图,算是模版题吧. #include < ...

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

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

  3. 【图论】求无向连通图的割点

    一篇写的非常好的博客,非常容易理解. http://www.cnblogs.com/en-heng/p/4002658.html 省选前两天,我还在看新的算法,吃枣药丸 转载于:https://www ...

  4. 图的割点、桥与双连通分支

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  5. [转载]图的割点、桥与双连通分支

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  6. 第1节 连通性强连通、割点和桥(一)

    文章目录 无向图割点.桥.双连通分量 Tarjan算法求割点和桥(割边) 代码: 边双连通分量 和 点双连通分量 代码 边双连通分量 和 点双连通分量 的缩点 有向图的弱连通与强连通 强连通分量 Ko ...

  7. 图的割点、桥和双连通分支的基本概念

    点连通度与边连通度 回到正题,首先介绍下什么是图的边连通度和点连通度.一般来说,点连通度是指对应一个图G,对于所有点集U属于V(G),也就是V(G)的子集中,使得G-U要么是一个非连通图,要么就是一个 ...

  8. 图的割点、桥与双连通分支的基本概念

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  9. tarjan算法求无向图的割点和桥

    tarjan算法求无向图的割点与桥 一篇tarjan算法求割点与桥的完整的解释,写的真的好认真 以下代码来自kuangbin的模板 4.5 图的割点.桥和双连通分支的基本概念 [点连通度与边连通度] ...

最新文章

  1. 字符编码简介 ANSI Unicode Unicode big endian UTF-8
  2. JQuery笔记(一)
  3. 雅虎向阿里巴巴示好原因有二
  4. 完善Linux/UNIX审计 将每个shell命令记入日志
  5. input-text
  6. Dubbo(五)之动态配置中心
  7. ASP.NET MVC下使用AngularJs语言(一):Hello your name
  8. 计算机体系结构及其硬件构成
  9. matlab半波整流怎么做,基于Matlab的单相半波可控整流电路的设计与仿真.doc
  10. Error creating bean with name错误,spring-boot报错
  11. 策略模式探究(二)多个门禁对接使用策略模式
  12. 专利写作规范及如何写一篇专利
  13. android屏幕点击录制脚本,Android录制屏幕脚本
  14. Shopee平台发布针对疫情政策的通知
  15. 相位误差对SAR图像的影响
  16. 二维绕任意点旋转_旋转变换(一)旋转矩阵
  17. 数据分析岗位招聘分析
  18. 0day安全:软件漏洞分析技术(第2版)pdf
  19. python代理ip_python代理ip7个汇总技巧
  20. python给定一个整数n、判断n是否为素数_python判断所输入的任意一个正整数是否为素数的两种方法...

热门文章

  1. 汽车维修保养小程序,汽车维修小程序
  2. 牛客网的刷题之旅——2020/8/6
  3. android获取摄像头视频帧数据
  4. win10怎么设置计算机密码怎么设置,win10怎么设置开机密码?
  5. Leetcode每日一题1371
  6. OpenHarmony主干代码如何获取
  7. c语言选择程序设计ppt,c语言 选择型程序设计 精品.ppt
  8. 教你如何增强win8系统电脑声音
  9. python获取渲染之后的网页_使用Pyppeteer抓取渲染网页
  10. mysql 存储过程 compile_SQLSERVER临时表导致存储过程重编译(recompile)的一些探讨_MySQL...