题目链接:传送门

题目大意:一副无向图,问有多少个节点满足删除该节点后图不连通,对于每个满足条件的节点,输出节点编号及删除节点将图分为几个连通块。若没有节点满足则输出No SPF nodes

题目思路:tarjan算法求关节点入门题(也可用矩阵存图)

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
#define Min(x,y) (x<y?x:y)
#define Max(x,y) (x>y?x:y)
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 100000007
#define inf 0x3f3f3f3f
#define N 1000005
#define maxn 1000050
typedef long long LL;
typedef pair<int,int> PII; int n,m,head[],hcnt,son,num;
int dfn[],low[],area[],vis[];
int deep;
struct Node{
int to,next;
Node(){}
Node(int a,int b):to(a),next(b){}
}node[];
inline void add(int x,int y){
node[hcnt]=Node(y,head[x]);
head[x]=hcnt++;
} void init(){
num=; ///最大节点的编号
hcnt=;
deep=; ///深度搜索树的深度优先数(第几个被搜索)
son=; ///记录根节点的子女个数
low[]=dfn[]=; ///low表示节点能通过子女和回边到达的最小深度优先数
mst(head,-); ///dfn表示节点的深度优先数
mst(vis,);
mst(area,); ///记录删除某个节点后图被分成了几块
vis[]=; ///标记节点是否访问过
} void dfs(int x){
for(int i=head[x];~i;i=node[i].next){
int e=node[i].to;
if(vis[e]) low[x]=Min(low[x],dfn[e]);
else{
vis[e]=;
dfn[e]=low[e]=++deep;
dfs(e);
low[x]=Min(low[x],low[e]);
if(low[e]>=dfn[x]){
if(x==) ++son;
else ++area[x];
}
}
}
} int main(){
int i,j,group,Case=,x,y;
while(scanf("%d",&x)!=EOF&&x){
init();
num=Max(num,x);
scanf("%d",&y);
num=Max(num,y);
add(x,y);
add(y,x);
while(scanf("%d",&x)&&x){
num=Max(num,x);
scanf("%d",&y);
num=Max(num,y);
add(x,y);
add(y,x);
}
if(Case)printf("\n");
printf("Network #%d\n",++Case);
dfs();
if(son>)area[]=son-;
int flag=;
for(i=;i<=num;++i)if(area[i]){
flag=;
printf(" SPF node %d leaves %d subnets\n",i,area[i]+);
}
if(!flag) printf(" No SPF nodes\n");
}
return ;
}

ZOJ1119(SPF)的更多相关文章

  1. POJ1523 SPF[无向图割点]

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8139   Accepted: 3723 Description C ...

  2. 【POJ 1523】SPF(割点)

    儿子数大于1的树根或者 Low[v] >= DFN[u]的非树根节点v 就是割点. #include <cstdio> #include <cstring> const ...

  3. 自动SPF生成工具

    到openspf网站去自动生成一下,地址是http://old.openspf.org/wizard.html.详细解释见下图关于spf的详细语法请看http://www.openspf.org/SP ...

  4. SPF 简介

    SPF 简介 摘要: SPF 是发送方策略框架 (Sender Policy Framework) 的缩写,希望能成为一个防伪标准,来防止伪造邮件地址.这篇文章对 SPF 进行了简单介绍,并介绍了它的 ...

  5. POJ1523 SPF

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8254   Accepted: 3772 Description Consi ...

  6. POJ 1523 SPF tarjan求割点

                                                                   SPF Time Limit: 1000MS   Memory Limit ...

  7. POJ1523 SPF(割点模板)

    题目求一个无向图的所有割点,并输出删除这些割点后形成几个连通分量.用Tarjan算法: 一遍DFS,构造出一颗深度优先生成树,在原无向图中边分成了两种:树边(生成树上的边)和反祖边(非生成树上的边). ...

  8. POJ 1523 SPF(寻找关节点)

                                                                         SPF Time Limit: 1000MS   Memory ...

  9. 如何设置DNS的SPF记录

    如何设置DNS的SPF记录 Introduction SPF的完整意思为 "Sender Policy Framework".翻译过来就是发送方策略框架,是一项跟 DNS 相关的技 ...

随机推荐

  1. java.lang.NoClassDefFoundError: com.doodlemobile.gamecenter.Platform

    这时候能够尝试一下下面方法: 右击"项目名"--->"Build path"----->"configure build path&quo ...

  2. Java 多线程之 synchronized 和 volatile 的比較

    概述 在做多线程并发处理时,常常须要对资源进行可见性訪问和相互排斥同步操作.有时候,我们可能从前辈那里得知我们须要对资源进行 volatile 或是 synchronized 关键字修饰处理.但是,我 ...

  3. Tomcat几种启动报错及解决办法

    今天真跪了,tomcat的错想到想不到的都遇到了.不记录一下都愧对今天愁掉的hair 在此之前分享一个集错网站,应该是程序员必备的网站之一,不过纯英文,小酸爽 Tags - Stack Overflo ...

  4. 记一次SmtpClient发送邮件引发的系列问题

    前提:公司同事离职,我接手同事负责的项目. 事件:某天公司的分析人员,说软件中的邮件发送功能不能使用,总是提示"邮件发送失败". 本地能够正常发送,发布WCF到服务器IIS上,再调 ...

  5. javascript原型的改动与重写(覆盖)区别

    每一个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象.javascript同意我们改动这个原型对象. 改动有2 ...

  6. 妙味云课堂之css:其它知识点汇总

    一. 热区 map 热区.area 点击区域 shape="circle" 圆型,coords="圆心点X.圆心点Y,圆的半径" shape="rec ...

  7. memcached 命令行举例

    1.启动Memcache  常用参数
memcached 1.4.3 
 -p <num> 设置端口号(默认不设置为: 11211) 
 -U <num> UDP监听端口 (默 ...

  8. OCR 即 光学字符识别

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...

  9. Pycharm快捷键小结

    1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + ...

  10. Android开发系列之创建自定义控件

    Android开发过程中我们经常需要定义自己的控件,一方面基于复用的角度考虑,一方面也是基于逻辑处理思维的角度考虑.在这篇博客里面,笔者想要介绍.总结几种Android自定义控件的方法,如果有什么不对 ...