POJ1523 SPF 单点故障
题意很简单,求删除割点后原先割点所在的无向连通图被分成了几个连通部分(原题说prevent at least one pair of available nodes from being able to communicate on what was previously a fully connected network,阻止至少一对可用节点能够在先前完全连接的网络上进行通信,所以输入的图不保证连通)
对于每个割点
- 如果它是根节点,则答案=DFS树的子树数量
- 如果它是非根节点,则答案=孩子low值>=当前结点的dfn值的孩子数
注意要扫描所有的点从未访问的点开始DFS!
还有多组数据记得清空数组!
代码如下(我绝对不会告诉你们我因为写错了输出格式而调了一上午)
#include<cstdio>
#include<cctype>
#include<algorithm>
#include<cstring>
using namespace std;
#define re register int
struct edge
{
int to,pre;
}edges[];//邻接表
int head[],tot,dfn[],dfs_clock;
int ans[];//删去结点i后连通分量的个数
int read()
{
int f=,x=;
char c=getchar();
while(!isdigit(c))
{
f=f|c=='-';
c=getchar();
}
while(isdigit(c))
{
x=(x<<)+(x<<)+(c^);
c=getchar();
}
return x;
}
void add(int x,int y)
{
edges[++tot].to=y;
edges[tot].pre=head[x];
head[x]=tot;
}
int tarjan(int u,int fa)
{
int lowu=dfn[u]=++dfs_clock,child=;
ans[u]=;
for(re i=head[u];i;i=edges[i].pre)
if(!dfn[edges[i].to])
{
child++;
int lowv=tarjan(edges[i].to,u);
lowu=min(lowu,lowv);
if(lowv>=dfn[u])//有一个孩子满足,连通分量+1
ans[u]++;
}
else if(edges[i].to!=fa)
lowu=min(lowu,dfn[edges[i].to]);
if(u==fa)//根节点删去后连通分量数=子树个数
ans[u]=child;
return lowu;
}
int main()
{
int t=,x,y;
while(x=read())
{
memset(edges+,,<<),memset(head+,,<<),memset(dfn+,,<<);
tot=dfs_clock=;
t++;
y=read();
int n=max(x,y);
add(x,y),add(y,x);
while(x=read())
{
y=read();
n=max(max(x,y),n);
add(x,y),add(y,x);
}
tarjan(,);
printf("Network #%d\n",t);
int pd=;
for(re i=;i<=n;i++)
if(ans[i]>)
{
pd=;
printf(" SPF node %d leaves %d subnets\n",i,ans[i]);
}
if(!pd)
printf(" No SPF nodes\n");
printf("\n");
}
return ;
}
SPF 单点故障
POJ1523 SPF 单点故障的更多相关文章
- POJ1523 SPF[无向图割点]
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8139 Accepted: 3723 Description C ...
- POJ1523 SPF
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8254 Accepted: 3772 Description Consi ...
- POJ1523 SPF(割点模板)
题目求一个无向图的所有割点,并输出删除这些割点后形成几个连通分量.用Tarjan算法: 一遍DFS,构造出一颗深度优先生成树,在原无向图中边分成了两种:树边(生成树上的边)和反祖边(非生成树上的边). ...
- POJ1523:SPF(无向连通图求割点)
题目:http://poj.org/problem?id=1523 题目解析: 注意题目输入输入,防止PE,题目就是求割点,并问割点将这个连通图分成了几个子图,算是模版题吧. #include < ...
- poj图论解题报告索引
最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman- ...
- Tarjan求割点和桥
by szTom 前置知识 邻接表存储及遍历图 tarjan求强连通分量 割点 割点的定义 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多, ...
- POJ1523:SPF——题解
http://poj.org/problem?id=1523 这题明显就是求割点然后求割完之后的强连通分量的个数. 割点都会求,怎么求割完的分量个数呢? 我们可以通过万能的并查集啊!(具体做法看代码吧 ...
- POJ 1523 SPF(求割点)
题目链接 题意 : 找出图中所有的割点,然后输出删掉他们之后还剩多少个连通分量. 思路 : v与u邻接,要么v是u的孩子,要么u是v的祖先,(u,v)构成一条回边. //poj1523 #includ ...
- POJ 1523 SPF 割点与桥的推断算法-Tarjan
题目链接: POJ1523 题意: 问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分 题解: Tarjan 算法模板题 顺序遍历整个图,能够得到一棵生成树: 树边:可理解为在DFS过 ...
随机推荐
- application.events 识别组合键 参考。
https://blog.csdn.net/chinayu2007/article/details/43761277 在窗体上放上ApplicationEvents控件,在OnMessage消息中加入 ...
- ARTS-3
ARTS的初衷 Algorithm:主要是为了编程训练和学习.每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard).进行编程训练,如果不训练你看再多的算法 ...
- JavaScript中JSON的序列化和解析
1.序列化:JSON对象----->JSON格式字符串 ①方法: JSON.stringify() ②示例程序: var jsonString = JSON.stringify(obj); al ...
- YARN日志聚合相关参数配置
日志聚合是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下,Contain ...
- Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.3 Propositional Equivalences
DEFINITION 1 A compound proposition that is always true,no matter what the truth values of the propo ...
- Centos7 搭建pptp服务器
1.检查是否支持pptp 返回ok即表示支持 modprobe ppp-compress-18 && echo ok 2.安装ppp yum install -y ppp 3.安装pp ...
- MySql-Mysql技术内幕~SQL编程学习笔记(1)
1.MySQL的历史,一些相关概念. 2.MySQL数据类型 *通常一个页内可以存放尽可能多的行,那么数据库的性能就越好,选择一个正确的数据类型至关重要. 1>UNSIGNED类型: 将数字类型 ...
- Spark启动流程(Standalone)- master源码
Master源码 package org.apache.spark.deploy.master //伴生类 private[deploy] class Master( override val rpc ...
- Linux 创建与删除(5)
相对于Windows下的右键新建文件与删除,我更喜爱Linux下的命令式创建与删除,真的方便.不过Windows下也可以借助工具来实现,比如git bash.cmder等等终端工具. 创建文件 新建文 ...
- spring boot 枚举使用的坑
java 枚举的功能挺多,但是坑更多,使用的时候要注意.如下面这个枚举. @Getter @AllArgsConstructor public enum EnumExpenseType impleme ...