题目描述:
考虑图8.9中的两个网络,假定网络中的数据只在有线路直接连接的2个结点之间以点对点
的方式传输。一个结点出现故障,比如图(a)所示的网络中结点3出现故障,将会阻止其他某些结
点之间的通信。结点1和结点2仍然是连通的,结点4和结点5也是连通的,但这2对结点之间
的通信无法进行了。因此结点3是这个网络的一个SPF结点。
严格的定义:对于一个连通的网络,如果一个结点出现故障,将会阻止至少一对结点之间的
通信,则该结点是SPF结点。
注意,图所示的网络不存在SPF结点。至少两个结点出现故障后,才会使得其他某对
结点之间无法通信。
输入描述:
输入文件包含多个测试数据,每个测试数据描绘了一个网络。每个网络的数据包含多对整数,
每对整数占一行,表示两个直接连接的结点。结点对中两个结点的顺序是无关的,1 2和2 1表示
同一对连接。结点序号范围为1~1000,每个网络的数据中最后一行为一个0,表示该网络数据
的结束。整个输入文件最后一行为一个0,代表输入结束。读入时需要忽略输入文件中的空行。
图 SPF结点
输出描述:
对输入文件中的每个网络,首先输出该网络在输入文件中的序号,然后是该网络中的SPF结
点。具体格式为:第一个网络的序号为"Network #1",第二个网络的序号为"Network #2",等等。
对网络中的每个SPF结点,输出占一行,输出格式如样例输出所示,输出信息标明SPF结点的
序号及该SPF结点出现故障后将整个网络分成几个连通的子网络。如果网络中不存在SPF结点,
则只输出"No SPF nodes"。每两个网络的输出之间,输出一个空行。
// 求无向图连通图的割点 以及 去掉该割点后图分成几个连通块
// Tarjan 算法的应用
#include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 1010
bool G[maxn][maxn];
int low[maxn],pre[maxn];
int ans[maxn];
int dfst;
int node;
int child;
void init(){
dfst=;
node=;
child=;
memset(G,,sizeof(G));
memset(ans,,sizeof(ans));
memset(pre,,sizeof(pre));
}
int dfs(int u){
int lowu;
lowu=pre[u]=++dfst;
int v;
for(v=;v<=node;v++){
if(G[u][v]){
if(!pre[v]){
int lowv=dfs(v);
lowu=min(lowu,lowv);
if(lowv>=pre[u]){
if(u!=) ans[u]++;
else child++;
}
}
else lowu=min(lowu,pre[v]);
}
}
return lowu;
}
int main()
{
int u,v;
int Case=;
while(scanf("%d",&u),u){
init();
scanf("%d",&v);
node=max(u,v);
G[u][v]=G[v][u]=;
while(scanf("%d",&u),u){
scanf("%d",&v);
node=max(node,v);
node=max(node,u);
G[u][v]=G[v][u]=;
}
dfs();
int found=;
if(child>) ans[]=child-;
if(Case) printf("\n");
printf("Network #%d\n",++Case);
for(int i=;i<=node;i++)
if(ans[i]){
found=;
printf(" SPF node %d leaves %d subnets\n",i,ans[i]+);
}
if(!found)
printf(" No SPF nodes\n");
} return ;
}

zoj 1119 /poj 1523 SPF的更多相关文章

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

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

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

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

  3. POJ 1523 SPF tarjan求割点

                                                                   SPF Time Limit: 1000MS   Memory Limit ...

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

                                                                         SPF Time Limit: 1000MS   Memory ...

  5. POJ 1523 SPF(求割点)

    题目链接 题意 : 找出图中所有的割点,然后输出删掉他们之后还剩多少个连通分量. 思路 : v与u邻接,要么v是u的孩子,要么u是v的祖先,(u,v)构成一条回边. //poj1523 #includ ...

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

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

  7. POJ - 1523 SPF

    题目要求割顶集,并且还要求出去掉割顶之后剩下的图连通数目. tarjan算法求出割顶后直接枚举就可以了吧. 一开始想到利用iscut[u]的次数也就是点u被判定为割顶的次数求连通分量数,还有利用与结点 ...

  8. poj 1523 SPF【点双连通求去掉割点后bcc个数】

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7246   Accepted: 3302 Description C ...

  9. POJ 1523 SPF (去掉割点能形成联通块的个数)

    思路:使用tarjan算法求出割点,在枚举去掉每一个割点所能形成的联通块的个数. 注意:后来我看了下别的代码,发现我的枚举割点的方式是比较蠢的方式,我们完全可以在tarjan过程中把答案求出来,引入一 ...

随机推荐

  1. GetSurfaceLevel

      if( SUCCEEDED( g_pTexture->GetSurfaceLevel( 0, &pSurface) ) )    {        pd3dDevice->Se ...

  2. ios开发小技巧之提示音播放与震动

    在ios开发中,有时候我们需要频繁播放某种提示声音,比如微博刷新提示音.QQ消息提示音等,对于这些短小且需要频繁播放的音频,最好将其加入到系统声音(system sound)里. 注意: 需要播放的音 ...

  3. SCI杂志更名时,如何计算影响因子?

  4. 基于jQuery的TreeGrid组件详解

    一.TreeGrid组件相关的类 1.TreeGrid(_config) _config:json格式的数据,组件所需要的数据都通过该参数提供. 2.TreeGridItem(_root, _rowI ...

  5. css ul li 制作导航条

    <html> <head> <style> .test ul{list-style:none;} .test li{float:left; width:100px; ...

  6. UNDERSTANDING CALLBACK FUNCTIONS IN JAVASCRIPT

    转自: http://recurial.com/programming/understanding-callback-functions-in-javascript/ Callback functio ...

  7. eclipse的设置和优化

    转载:http://my.oschina.net/zhaoqian/blog/66545 1.eclipse下的编码设置: eclipse 中使用模板新建 JSP,xhtml等 文件时,默认的编码为: ...

  8. python 模拟浏览器

    想用python模拟浏览器访问web的方法测试些东西,有哪几种方法呢? 一类:单纯的访问web,不解析其js,css等. 1. urllib2 #-*- coding:utf-8 -* import ...

  9. iOS 深入理解RunLoop

    RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...

  10. 223. Rectangle Area

    题目: Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defin ...