poj 1523 求割点
思路:对于所有节点,每次找的子树,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 求割点的更多相关文章
- poj 1523求割点
题意:给出一个无向图,求割点以及去除这个点后图分为几部分: 思路:割点定义:去掉该点后图将分成几个部分.割点:(1)当k为根节点且有>1个分支,则去除该点后图便被分成几个分支.(2)DFN[v] ...
- poj 1523 求割点把一个图分成几个联通部分
#include<stdio.h> #include<string.h> #define N 1100 struct node { int u,v,next; }bian[N* ...
- Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题
Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...
- POJ 1523 SPF 割点 Tarjan
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9317 Accepted: 4218 Description C ...
- POJ 1523 SPF (割点,连通分量)
题意:给出一个网络(不一定连通),求所有的割点,以及割点可以切分出多少个连通分量. 思路:很多种情况. (1)如果给的图已经不是连通图,直接“ No SPF nodes”. (2)求所有割点应该不难 ...
- poj 1144(求割点个数)
题目链接:http://poj.org/problem?id=1144 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根结点并且它的子女个数大于等于2,则v是割点.2.如果点v不是根结点,并 ...
- POJ 1523 SPF 割点与桥的推断算法-Tarjan
题目链接: POJ1523 题意: 问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分 题解: Tarjan 算法模板题 顺序遍历整个图,能够得到一棵生成树: 树边:可理解为在DFS过 ...
- POJ 1144 Network(无向图连通分量求割点)
题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...
- poj 1523 SPF(tarjan求割点)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
随机推荐
- javascript中字符串的trim功能表达式
string.replace(/(^\s*)|(\s*$)/g, "") 用来删除行首行尾的空白字符(包括空格.制表符.换页符等等)
- POJ 1151 Atlantis (扫描线+线段树)
题目链接:http://poj.org/problem?id=1151 题意是平面上给你n个矩形,让你求矩形的面积并. 首先学一下什么是扫描线:http://www.cnblogs.com/scau2 ...
- linux常用命令-搜索
1.find $ find . -name nginx* $ find . -name nginx* -ls $ find . -type f -mmin -10 搜索当前目录中,所有过去10分钟中更 ...
- 深入浅出之Smarty模板引擎工作机制(二)
源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解. Smarty模板引擎的原理,其实是这么一个过程: ...
- MySQL常用查询语句集合《转》
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...
- 部署WEB应用程序
部署WEB应用程序: 1.在模板机上新建IIS站点 2.安装WebDeploy后在IIS控制台中导出站点为应用程序包 其站点在新虚机上必须存在,否则会报错,如下: 应用程序(C:\ProgramDat ...
- iOS GCD 与 NSOperationQueue
NSOperationQueue ios NSOperation vs. GCD StackOverflow: NSOperation vs. Grand Central Dispatch Blog: ...
- java 覆盖hashCode()深入探讨 代码演示样例
java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...
- 关于port的关闭——Linux
本文出自:http://blog.csdn.net/svitter 引文出自:http://bbs.chinaunix.net/thread-775649-1-1.html 1.关闭服务 servic ...
- 4K Block Size的Device和 Aligned IO
http://www.cnblogs.com/cenalulu/p/3587006.html 背景:最近采购了一批新的服务器,底层的存储设备的默认physical sector size从原有的 ...