题意:

给个无向图,问有多少个割点,对于每个割点求删除这个点之后会产生多少新的点双联通分量


题还是很果的

怎么求割点请参考tarjan无向图

关于能产生几个新的双联通分量,对于每个节点u来说,我们判断他是否是割点,即判断是否满足他的儿子v的low[v]>dfn[u]

而这个时候割掉这个点就会让双联通分量增加,所以搞一个数组记录一下这个操作的次数就行

请注意在是否是根节点的问题上特判

!!注意输出格式!!

 #include<cstdio>
#include<algorithm>
#include<cstring>
#define N 5010
#define M 10100
#define Max(a,b,c) max(max(a,b),c)
using namespace std;
int head[N],n,m,ecnt=,u,v,dfn[N],low[N],indx,du[N],ans,isap[N],ap,task,sum[N];
struct edge
{
int u,v,nxt;
}e[M*];
void add(int u,int v)
{
e[ecnt].v=v;
e[ecnt].nxt=head[u];
e[ecnt].u=u;
head[u]=ecnt++;
e[ecnt].v=u;
e[ecnt].nxt=head[v];
e[ecnt].u=v;
head[v]=ecnt++;
}
void dfs(int u,int fa)
{
dfn[u]=low[u]=++indx;
int n_ch=;
for (int i=head[u];i;i=e[i].nxt)
{
int v=e[i].v;
if (!dfn[v])
{
dfs(v,i);
low[u]=min(low[u],low[v]);
if (low[v]>=dfn[u])
isap[u]=,ap++,sum[u]++;
n_ch++;
}
else
if (v!=fa)
low[u]=min(dfn[v],low[u]);
}
if (fa==- && n_ch==)
isap[u]=,ap--;
if (isap[u] && fa!=-) sum[u]++;
}
void init()
{
n=;
memset(sum,,sizeof(sum));
memset(head,,sizeof(head));
memset(dfn,,sizeof(dfn));
memset(isap,,sizeof(isap));
ecnt=;
ans=;
indx=;
ap=;
}
void solve()
{
if (n==) return;
task++;
for (int i=;i<=n;i++)
if (!dfn[i]) dfs(i,-);
printf("Network #%d\n",task);
if (ap==)
printf(" No SPF nodes\n");
for (int i=;i<=n;i++)
if (isap[i])
printf(" SPF node %d leaves %d subnets\n",i,sum[i]);
putchar('\n');
init();
}
int main()
{
// freopen("1.in","r",stdin);
while ()
{
while (scanf("%d",&u)!=EOF)
{
if (u==)
{
solve();
continue;
}
if (scanf("%d",&v)==EOF) break;
n=Max(n,u,v);
add(u,v);
// printf("%d %d\n",u,v);
}
if (n==) break;
}
return ;
}

POJ 1523 SPF 求割点的好(板子)题!的更多相关文章

  1. poj 1523 SPF 求割点以及删除该割点后联通块的数量

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7136   Accepted: 3255 Description C ...

  2. POJ 1523 SPF (无向图割点)

    <题目链接> 题目大意: 给你一个连通的无向图,问你其中割点的编号,并且输出删除该割点后,原图会被分成几个连通分量. 解题分析: Tarjan求割点模板题. #include <cs ...

  3. POJ 1523 Tarjan求割点

    SPF Description Consider the two networks shown below. Assuming that data moves around these network ...

  4. poj 1523 SPF(tarjan求割点)

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

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

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

  6. poj 1523 SPF(双连通分量割点模板)

    题目链接:http://poj.org/problem?id=1523 题意:给出无向图的若干条边,求割点以及各个删掉其中一个割点后将图分为几块. 题目分析:割点用tarjan算法求出来,对于每个割点 ...

  7. POJ 1523 SPF 割点 Tarjan

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9317   Accepted: 4218 Description C ...

  8. POJ 1144 无向图求割点

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

  9. zoj 1119 / poj 1523 SPF (典型例题 求割点 Tarjan 算法)

    poj : http://poj.org/problem?id=1523 如果无向图中一个点 u 为割点 则u 或者是具有两个及以上子女的深度优先生成树的根,或者虽然不是一个根,但是它有一个子女 w, ...

随机推荐

  1. Codeforces#498F. Xor-Paths(折半搜索)

    time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standa ...

  2. What is EJB

    What is EJB 0.什么是EJB? 答:EJB是用于构建企业应用程序模块托管的.服务器端组件架构.EJB技术加速并简化了开发基于Java技术的分布式.事务性.安全和便携的应用程序. 先看一下E ...

  3. 用MySQL的optimizer_trace进行sql调优

    在我们调优MySQL的SQL时候,通常使用三种工具进行查看sql执行的效率,explain.profile.optimizer_trace.前两个经常被人使用,由于第三个难度较大,大家使用的较少,下面 ...

  4. SEOer必读:50个网站推广方法

    1.论坛推广 这里所说的论坛推广绝对不是在论坛里一个一个版贴广告,也不是将网站地址加在签名里然后疯狂刷屏,那样既耗费精力而且效果也不见得好,论坛管理员只要点几下鼠标就能将你的帖子全部删除,顺便封掉你的 ...

  5. 制作linux系统U盘并使用U盘安装CentOS7.6系统

    目录   一.制作linux启动盘     1.1. 准备工作     1.2. 制作linux系统U盘   二.使用U盘安装Centos7.6     2.1. 使用U盘启动     2.2. 更改 ...

  6. Docker迁移学习及其他

    起因: 有在一台服务器A上通过docker搭建git服务,由于某些原因需要将其迁移到另一台服务器B. 过程: 最终采用方式: 首先通过docker ps(-a) 查看目标容器,然后通过commit命令 ...

  7. 如何解决mysql中读取含表情符号的内容无法识别的问题

    当内容中包含有表情符号的时候,写入mysql时一般会设置字段或者表的charset为utf8mb4的形式: ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicod ...

  8. is和==,encode和decode

    0.编码解码 >encode和decode a = "你好" s = a.encode("GBK") print(s) # b'\xc4\xe3\xba\ ...

  9. 模块pandas

    python之pandas简单介绍及使用(一) https://www.cnblogs.com/misswangxing/p/7903595.html

  10. Python中的str

    str_lst = [ ('元素替换',), ('字符串切片',), ('字符串分割',), ('字符串连接',), ('元素计数',), ('寻找元素',), ('判断字符串的开头与结尾',), ( ...