题意:求图中割点的数量,割点是指无向图中的一个点,满足删除与该点所连的边后原图中曾经相通的点不再连通。

题解:回忆Tarjan求SCC的过程,如果某个点u的某个儿子v及其子树中的所有点的low均大于等于dfn[u](即low[v]<=dfn[u]),那么v子树上的点只能通过u来到达其他节点,因此u是一个割点。同理如果low[v]>dfn[n],则v子树上的点只能通过(u,v)来到达其他节点,因此(u,v)是一条割边。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;const int MAXN=100+2;
const int MAXM=10000+2;
struct HASH{int u;HASH *next;HASH(){}HASH(int _u,HASH *_next):u(_u),next(_next){}
}*table[MAXN],mem[2*MAXM];
int N,cnt,ans;
int dfn[MAXN],low[MAXN],depth,t;
bool flag[MAXN],cut[MAXN];void Insert(int u,int v){ table[u]=&(mem[cnt++]=HASH(v,table[u]));}void Tarjan(int x){dfn[x]=low[x]=++depth,flag[x]=1;for(HASH *p=table[x];p;p=p->next){if(!dfn[p->u]){Tarjan(p->u),low[x]=min(low[x],low[p->u]);if(low[p->u]>=dfn[x] && x!=1) cut[x]=1;else if(x==1) t++;
//if(low[p->u]>dfn[x]) bridge++;
        }else low[x]=min(low[x],dfn[p->u]);}
}int main(){while(scanf("%d",&N)!=EOF && N){t=ans=cnt=depth=0;memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(cut,0,sizeof(cut));memset(flag,0,sizeof(flag));memset(table,0,sizeof(table));int u,v;while(scanf("%d",&u) && u)while(getchar()!='\n'){scanf("%d",&v);Insert(u,v),Insert(v,u);}Tarjan(1);for(int i=1;i<=N;i++)if(cut[i]) ans++;if(t>1) ans++;printf("%d\n",ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/WDZRMPCBIT/p/6477067.html

POJ1144 Network 连通性相关推荐

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

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

  2. 竞赛程序设计知识要点图谱

    一.基础算法 1.枚举法 POJ1248 Safecracker HDU1172 猜数字 POJ1543 Perfect Cubes POJ1046 Color Me Less 2.递归法:Hanoi ...

  3. Network UVA - 315(Tarjan+连通性问题:求割点)

    题意: 存在n个电话公司的网络连接站点,每个站点之间相互连通,是一个连通图,问,如果去掉一个站点,能够将整个网络体系变得不再连通,那么这样的点有几个,即求它的割点个数. 题目: A Telephone ...

  4. 图论-无向图的连通性(POJ1144)(POJ3352)

    1.割点和割边: 割点:在无向图中,删除某个节点后,图的连通分量数量增加,则称该节点为割点 桥:如果删除某条边后,连通图变得不再连通,则此条边为桥,或者为割边 下面说一种用DFS求割点的算法,即利用了 ...

  5. 【POJ1144】Network

    题面太长而且是英文不贴 大意:求割点 裸题 /*To The End Of The Galaxy*/ #include<cstdio> #include<cstdlib> #i ...

  6. 图论 —— 图的连通性

    [基本概念] 1.连通图与连通分量 1)连通图:无向图 G 中,若对任意两点,从顶点 Vi 到顶点 Vj 有路径,则称 Vi 和 Vj 是连通的,图 G 是一连通图 2)连通分量:无向图 G 的连通子 ...

  7. 0x66.图论 - Tarjan算法与无向图连通性

    目录 一.无向图的割点与桥 割点 桥/割边 时间戳 搜索树 追溯值 二.割边判定法则 三.割点判定法则 1.luogu P3388 [模板]割点(割顶) 2.luogu P3469 [POI2008] ...

  8. linux网络命名空间详解,Linux Network Namespace (netns) 详解

    Linux Network Namespace (netns) 详解 Network Namespace (以下简称netns)是Linux内核提供的一项实现网络隔离的功能,它能隔离多个不同的网络空间 ...

  9. 测试openstack neutron的网络连通性

    测试openstack网络连通性,方式如下: 1.openstack控制端执行nova list 查看VM对应的名称和VM_UUID. 2.openstack控制端执行nova show $VM_UU ...

  10. 创建第二个 local network - 每天5分钟玩转 OpenStack(84)

    GUI 中有两个地方可以创建 network: 1. Project -> Network -> Networks 这是普通用户在自己的 tenant 中创建 network 的地方. 2 ...

最新文章

  1. 2022-2028年中国相变蜡行业市场前瞻与投资战略规划分析报告
  2. iPhone真机调试流程
  3. python 配置文件编码问题
  4. 【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解
  5. 为什么B+树比B树更适合做数据库索引
  6. 分布式查询处理和优化相关知识介绍
  7. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
  8. python 编译procto错误处理
  9. 无需SherlockActionbar的SlidingMenu使用详解(二)——向Fragment中添加ViewPager和Tab
  10. Charm Bracelet(POJ-3624)
  11. android gif 处理,gifflen 调用以及错误处理
  12. fedora下做成liveOS的U盘容量变小问题
  13. 腾讯云:一句话语音识别API接入步骤和说明
  14. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...
  15. 21. 合并两个有序链表
  16. Ubuntu20.04 在anaconda上,opencv-python支持h264编码
  17. 解决苹果手机双击页面放大的问题
  18. 硬盘播放器和pc计算机,电脑可不可以用来当电影播放器用
  19. 一次CNVD-2020-10487漏洞利用
  20. 解决外边距坍塌的几种方法

热门文章

  1. 【渝粤题库】陕西师范大学200591 英语语法
  2. 数据预处理第2讲:非线性变换
  3. 编程题常见输入格式处理方法
  4. 操作SSO对象模型时,异常“SSO_E_CANARY_VALIDATION_FAILURE”的处理
  5. python-14:迭代器 生成器,3种方法:g.__next__() next(g) g.send(value)
  6. 【转】 一定要让孩子知道的20个小故事
  7. Question | 你所遇到的验证码问题可能都在这里了
  8. 如何成长为一名合格的web架构师?
  9. mysql表结构及索引脚本
  10. 【C/C++】【VS开发】结构体存储空间数据对齐说明