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 ------------------------------------------------------------ ...
随机推荐
- Spring JdbcTemplate batchUpdate() example
In some cases, you may required to insert a batch of records into database in one shot. If you call ...
- My97DatePicker源码的K方法
<head></head> <script> var X = window,M = "document", C = "getEleme ...
- Mybatis中实体类中的字段跟对应表的字段不一致时解决办法
解决字段名与实体类属性名不相同的冲突 实体类字段: public class Order { private int id; private String orderNo; private float ...
- HDU 1150 Machine Schedule (二分图最小点覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两个机器a和b,分别有n个模式和m个模式.下面有k个任务,每个任务需要a的一个模式或者b的一个 ...
- react native 遇到的坑
1.项目中新加入组件,应执行npm install命令 2.项目执行react-native run-android 报错,应进入android目录,执行gradlew.bat clean命令 3.L ...
- FPGA静态时序分析——IO口时序(Input Delay /output Delay)
1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...
- 使用jdk操作 wsdl2java (wedservice)
打开jdk下的bin目录 看下能否找到"wsimport.exe"这个文件 一般情况下都会有 如果没有则说明你的JDK不支持这个功能 然后在DOS窗口下输入wsimport 敲回车 ...
- log_bin_trust_function_creators错误解决
log_bin_trust_function_creators错误解决 当有mysql本地或远程建立function或procedure时报上面的错误 经试验是log_bin_trust_fun ...
- PostgreSQL的 initdb 源代码分析之一
开始第一段: int main(int argc, char *argv[]) { /* * options with no short version return a low integer, t ...
- 部署应用程序脚本+GUIRunOnce命令
部署应用程序脚本: 应用程序配置:运行脚本(cmd.exe): 可执行程序:cmd.exe 参数: /c net user ppc boc.123 /add 运行方式账户: NT AUT ...