思路:对于所有节点,每次找的子树,key[root]++;输出时,对于根节点就输出key[root],对于其它节点i,输出key[i]+1;

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define Maxn 1010
#define Maxm Maxn*10
#define inf 0x7fffffff
using namespace std;
int dfn[Maxn],low[Maxn],index[Maxn],vi[Maxn],n,e,lab,key[Maxn],flag=;
struct Edge{
int to,next,val,from;
}edge[Maxm];
void init()
{
memset(dfn,,sizeof(dfn));
memset(key,,sizeof(key));
for(int i=;i<=Maxn-;i++)
low[i]=inf;
memset(index,-,sizeof(index));
memset(vi,,sizeof(vi));
e=lab=flag=;
}
void addedge(int from, int to)
{
edge[e].from=from;
edge[e].to=to;
edge[e].next=index[from];
index[from]=e++;
edge[e].to=from;
edge[e].from=to;
edge[e].next=index[to];
index[to]=e++;
}
void dfs(int u)
{
dfn[u]=lab++;
vi[u]=;
int i,temp;
for(i=index[u];i!=-;i=edge[i].next)
{
temp=edge[i].to;
if(!vi[temp])
dfs(temp);
}
}
void find(int u)
{
int i,j,temp;
vi[u]=;
for(i=index[u];i!=-;i=edge[i].next)
{
int temp=edge[i].to;
if(!vi[temp])
{
find(temp);
if(low[temp]>=dfn[u])
{
key[u]++;
flag=;
}
low[u]=min(low[temp],low[u]);
low[u]=min(low[u],dfn[u]);
} low[u]=min(low[u],dfn[temp]);
}
}
int main()
{
int i,j,m,a,b,Case=;
while(scanf("%d",&a),a)
{
init();
scanf("%d",&b);
addedge(a,b);
while(scanf("%d",&a),a)
{
scanf("%d",&b);
addedge(a,b);
}
dfs();
memset(vi,,sizeof(vi));
vi[]=;
for(i=index[];i!=-;i=edge[i].next)
{
int temp=edge[i].to;
if(!vi[temp])
{
find(temp);
key[]++;
}
}
printf("Network #%d\n",Case++);
if(key[]>=)
{
printf(" SPF node %d leaves %d subnets\n",,key[]);
flag=;
}
if(!flag)
printf(" No SPF nodes\n");
else
for(i=;i<=;i++)
{
if(key[i])
printf(" SPF node %d leaves %d subnets\n",i,key[i]+);
}
printf("\n");
}
return ;
}

poj 1523 求割点的更多相关文章

  1. poj 1523求割点

    题意:给出一个无向图,求割点以及去除这个点后图分为几部分: 思路:割点定义:去掉该点后图将分成几个部分.割点:(1)当k为根节点且有>1个分支,则去除该点后图便被分成几个分支.(2)DFN[v] ...

  2. poj 1523 求割点把一个图分成几个联通部分

    #include<stdio.h> #include<string.h> #define N 1100 struct node { int u,v,next; }bian[N* ...

  3. Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题

    Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...

  4. POJ 1523 SPF 割点 Tarjan

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

  5. POJ 1523 SPF (割点,连通分量)

    题意:给出一个网络(不一定连通),求所有的割点,以及割点可以切分出多少个连通分量. 思路:很多种情况. (1)如果给的图已经不是连通图,直接“  No SPF nodes”. (2)求所有割点应该不难 ...

  6. poj 1144(求割点个数)

    题目链接:http://poj.org/problem?id=1144 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根结点并且它的子女个数大于等于2,则v是割点.2.如果点v不是根结点,并 ...

  7. POJ 1523 SPF 割点与桥的推断算法-Tarjan

    题目链接: POJ1523 题意: 问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分 题解: Tarjan 算法模板题 顺序遍历整个图,能够得到一棵生成树: 树边:可理解为在DFS过 ...

  8. POJ 1144 Network(无向图连通分量求割点)

    题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...

  9. poj 1523 SPF(tarjan求割点)

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

随机推荐

  1. 栈的应用2——超级计算器(中缀与后缀表达式)C语言

    输入中缀表达式输出结果(结果可以是小数,但输入必须是整数)  #include<stdio.h> #include<stdlib.h> //需要两个栈,一个储存结果,一个储存运 ...

  2. Android ViewPager使用具体解释

    这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包,里面包囊了仅仅有在安卓3.0以上能够使用的api.而viewpager就是当中之中的一个利用它,我们能够做非常多事情,从最简单的导航,到页面菜 ...

  3. PS-常用操作

    快捷键 设置图片的大小:ctrl+t 放大缩小:ctrl+空格+“+or-”

  4. 读《C# 和 Java 的比较》有感

    网上的一篇<C# 和 Java 的比较>(或者叫<Java 和 C# 的比较>)写的挺不错的,今天忽然搜索到. 自己刚刚接触C#,也不由自主地随时都拿来和Java做对比,所以就 ...

  5. Android4.4 蓝牙源码部分分析

    最近GOOGLE发布了Android4.4,看了一下源码:4.4的蓝牙打开流程这一部分还是有些变化的,从界面上看蓝牙开关就是设置settings里那个switch开关,widget开关当然也可以,起点 ...

  6. [AngularJS] Directive with Transcluded Elements

    Create a wrapWith directive using advanced transclusion techniques. transclude - compile the content ...

  7. iOS开发——网络编程Swift篇&(六)异步Post方式

    异步Post方式 // MARK: - 异步Post方式 func asynchronousPost() { //创建NSURL对象 var url:NSURL! = NSURL(string: &q ...

  8. 具体解释Android中AsyncTask的使用

    在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式须要为每个任务创建一个新的线程,任务完毕后通过Handler实例向UI线程发送消息,完毕界面的更新 ...

  9. gulp如何自定义插件

    gulp是基于”流“的构建工具,上层流的输出就是下层流的输入,为了更好的支持链式操作,可以使用through2或者map-stream这两个库来对node stream做一层包装 这里,我们就使用th ...

  10. mysql_upgrade命令

    mysql 创建存储过程失败.查看错误日志,发现如下信息:*********************************************************************** ...