***割点概念:去掉一个点后图不连通,该点就为割点

割点满足的条件:

一个顶点u是割点,当且仅当满足(1)或(2)

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

(2) u不为树根,且满足存在(u,v)为树枝边(或称 父子边,即u为v在搜索树中的父亲),使得 dfn(u)<=low(v)。

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=122091#problem/B***

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define N 100005 int n;
int dfn[N], low[N], Father[N];
int Time; vector<vector<int> > G; void Init()
{
G.clear();
G.resize(n+5);
memset(dfn, 0, sizeof(dfn));
memset(low, 0, sizeof(low));
memset(Father, 0, sizeof(Father));
Time=0;
} void Tarjan(int u, int fa)
{
dfn[u]=low[u]=++Time;
Father[u]=fa;
int len=G[u].size(), v; for(int i=0; i<len; i++)
{
v=G[u][i];
if(!dfn[v])
{
Tarjan(v, u);
low[u]=min(low[u], low[v]);
}
else if(fa!=v)
low[u]=min(low[u], dfn[v]);
}
} void solve()
{
int RootSon=0, ans=0, v;
bool Cut[N]= {false}; for(int i=1; i<=n; i++)
{
if(!low[i])
Tarjan(i, 0);
} for(int i=2; i<=n; i++)
{
v=Father[i];
if(v==1)
RootSon++;
else if(dfn[v]<=low[i])
Cut[v]=true;
}
for(int i=2; i<=n; i++)
{
if(Cut[i])
ans++;
}
if(RootSon>1)
ans++;
printf("%d\n", ans);
} int main()
{
while(scanf("%d", &n), n)
{
Init();
int a, b;
char ch;
while(scanf("%d", &a), a)
{
while(scanf("%d%c", &b, &ch))
{
G[a].push_back(b);
G[b].push_back(a);
if(ch=='\n')
break;
}
}
solve();
}
return 0;
}

无向图求割点 UVA 315的更多相关文章

  1. 无向图求割点 UVA 315 Network

    输入数据处理正确其余的就是套强联通的模板了 #include <iostream> #include <cstdlib> #include <cstdio> #in ...

  2. UVA 315 Network (模板题)(无向图求割点)

    <题目链接> 题目大意: 给出一个无向图,求出其中的割点数量. 解题分析: 无向图求割点模板题. 一个顶点u是割点,当且仅当满足 (1) u为树根,且u有多于一个子树. (2) u不为树根 ...

  3. uva 315 Network(无向图求割点)

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

  4. B - Network---UVA 315(无向图求割点)

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

  5. (连通图 模板题 无向图求割点)Network --UVA--315(POJ--1144)

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

  6. poj 1523"SPF"(无向图求割点)

    传送门 题意: 有一张联通网络,求出所有的割点: 对于割点 u ,求将 u 删去后,此图有多少个联通子网络: 对于含有割点的,按升序输出: 题解: DFS求割点入门题,不会的戳这里

  7. poj 1144 Network 无向图求割点

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

  8. POJ 1144 无向图求割点

     学长写的: #include<cstdio>#include<cstdlib>#include<cmath>#include<iostream>#in ...

  9. UVA315 (无向图求割点)

    题目大意:给定一个无向图,问共存在多少个割点.(割点:去掉此点后此图会断开连接)割点有两种存在:一种是第一次搜索的根节点,若其子节点数超过两个,则此点去掉后图会 断开连接,因此此点为割点:或者此点为搜 ...

  10. UVA-315 无向图求割点个数

    题意抽象: 给定一个无向图,输出割点个数. 割点定义:删除该点后,原图变为多个连通块. 考虑一下怎么利用tarjan判定割点: 对于点u和他相连的当时还未搜到的点v,dfs后如果DFN[u]<= ...

随机推荐

  1. flask请求钩子(就是django的中间件)

    flask中的请求钩子就是域django的中间件类似,作用都是用于在请求前.后.响应前.后进行一些hook操作. 请求钩子装饰器 @app.before_request # 请求前会调用,一般可以用来 ...

  2. [集训队作业2013] 城市规划(NTT)

    一周一博客二专题计划 题面 n 个点的简单 (无重边无自环) 有标号无向连通图数目. 看着就很典 思路 设\(f(n)\)为n点连通图数目.设\(g(n)\)为n点不一定联通图数目,显然直接枚举每条边 ...

  3. Dio和http库是Flutter中两种常用的网络请求库

    Dio Dio 的优点: 强大的功能:Dio提供了丰富的功能,支持拦截器.文件下载和上传.超时设置等高级特性,满足了大多数网络请求的需求. 支持并发请求:Dio具有良好的并发性能,可以同时处理多个网络 ...

  4. 拖拽功能实现vue

    1.按钮 <el-button @mousedown="down" @touchstart="down" @mousemove="move&qu ...

  5. 有了这个算法,图像上文字擦除再也用不上PS了

    摘要:本文介绍几篇关于自然场景下文字擦除的论文工作. 图像文字擦除方法 给定一幅自然场景图像,只将图像中文字区域抹去而不改动其他区域像素值的方法称为文字擦除算法.该方法在隐私保护,身份信息篡改,数据增 ...

  6. 提升源代码安全性的C#和Java深度混淆工具——IpaGuard

    提升源代码安全性的C#和Java深度混淆工具--IpaGuard 摘要 Ipa Guard是一款功能强大的IPA混淆工具,通过对iOS IPA文件进行混淆加密,保护其代码.资源和配置文件,降低破解反编 ...

  7. CNCF即将推出平台成熟度模型丨亮点导览

    今年年初,云原生计算基金会(CNCF)发布了平台白皮书(点击这里查看中文版本).白皮书描述了云计算内部平台是什么,以及它们可以为企业提供的价值. 为了进一步挖掘平台对企业的价值,为企业提供一个可以评估 ...

  8. 火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

    Learning to rank Learning to rank主要分为数据收集,离线训练和在线预测三个部分.搜索系统是一个Data-driven system,因此火山引擎DataLeap的Cat ...

  9. DamiBus v0.51 发布

    DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块.隔离模块.领域模块).零依赖,特适合 DDD. 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅. 支 ...

  10. SpringBoot Docker Skywalking agent 不生效

    SpringBoot Skywalking agent 通过 Dockfile 配置 不生效 ENTRYPOINT ["java","-Djava.security.eg ...