zoj 1119 /poj 1523 SPF
题目描述:
考虑图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的更多相关文章
- zoj 1119 / poj 1523  SPF (典型例题 求割点 Tarjan 算法)
		poj : http://poj.org/problem?id=1523 如果无向图中一个点 u 为割点 则u 或者是具有两个及以上子女的深度优先生成树的根,或者虽然不是一个根,但是它有一个子女 w, ... 
- poj 1523 SPF(双连通分量割点模板)
		题目链接:http://poj.org/problem?id=1523 题意:给出无向图的若干条边,求割点以及各个删掉其中一个割点后将图分为几块. 题目分析:割点用tarjan算法求出来,对于每个割点 ... 
- POJ 1523 SPF   tarjan求割点
		SPF Time Limit: 1000MS Memory Limit ... 
- POJ 1523 SPF(寻找关节点)
		SPF Time Limit: 1000MS Memory ... 
- POJ 1523 SPF(求割点)
		题目链接 题意 : 找出图中所有的割点,然后输出删掉他们之后还剩多少个连通分量. 思路 : v与u邻接,要么v是u的孩子,要么u是v的祖先,(u,v)构成一条回边. //poj1523 #includ ... 
- POJ 1523 SPF (割点,连通分量)
		题意:给出一个网络(不一定连通),求所有的割点,以及割点可以切分出多少个连通分量. 思路:很多种情况. (1)如果给的图已经不是连通图,直接“ No SPF nodes”. (2)求所有割点应该不难 ... 
- POJ - 1523 SPF
		题目要求割顶集,并且还要求出去掉割顶之后剩下的图连通数目. tarjan算法求出割顶后直接枚举就可以了吧. 一开始想到利用iscut[u]的次数也就是点u被判定为割顶的次数求连通分量数,还有利用与结点 ... 
- poj 1523 SPF【点双连通求去掉割点后bcc个数】
		SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7246 Accepted: 3302 Description C ... 
- POJ 1523 SPF (去掉割点能形成联通块的个数)
		思路:使用tarjan算法求出割点,在枚举去掉每一个割点所能形成的联通块的个数. 注意:后来我看了下别的代码,发现我的枚举割点的方式是比较蠢的方式,我们完全可以在tarjan过程中把答案求出来,引入一 ... 
随机推荐
- jQuery插件手把手教会(二)
			上次我们将到了简单的jQuery插件,这次我们继续: 面向对象的插件开发 为什么要有面向对象的思维,因为如果不这样,你可能需要一个方法的时候就去定义一个function,当需要另外一个方法的时候,再去 ... 
- unity3d android互调
			unityPlayer = new AndroidJavaClass("com.xxx.xxx.MainActivity"); curActivity = unityPlayer. ... 
- HDU 2136 Largest prime factor(查找素数,筛选法)
			题目梗概:求1000000以内任意数的最大质因数是第几个素数,其中 定义 1为第0个,2为第1个,以此类推. #include<string.h> #include<stdio.h& ... 
- Asp.Net缓存(2)
			缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ... 
- java基础知识回顾之java Socket学习(一)--UDP协议编程
			UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄 ... 
- django如何用orm增加manytomany关系字段(自定义表名)
			不自定义表名的,网上有现成的,但如果自定义之后,则要变通一下了. app_insert = App.objects.get(name=app_name) site_insert = Site.obje ... 
- 2013 ACM-ICPC长沙赛区全国邀请赛—Special equations
			……但是没仔细看,直接跳过了 这题直接枚举就可以过了 ;} 
- mysql小记--基础知识
			一.事务 事务是由一组SQL语句组成的逻辑处理单元. 事务的特征ACID,即原子性.一致性.隔离性和持久性. 原子性(Atomicity)事务作为整体执行,操作要么全部执行.要么全部不执行. 一致性( ... 
- 李洪强iOS开发之keychain的使用
			通常情况下,我们用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码.证书等等,就需要使用更为安全的keychain了.keychain里保存的信息不会因App被删除而丢失,在用 ... 
- lintcode 中等题:interleaving String 交叉字符串
			题目 交叉字符串 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成. 样例 比如 s1 = "aabcc" s2 = "dbbca" - 当 ... 
