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 ------------------------------------------------------------ ...
随机推荐
- DataSnap与FireDAC三层
相交资料: http://blog.csdn.net/shuaihj/article/details/6129131http://www.cnblogs.com/hnxxcxg/p/4007876.h ...
- DelphiXE7操作sqlite数据库
准备工作: 1.用SQLiteExpertPers建立一个sqlite数据库. 2.打开delphi xe7. 一.FireDAC法 设置库联接 1.放入FDConnection1控件 2.放入FDC ...
- POJ 3026 Borg Maze(bfs+最小生成树)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6634 Accepted: 2240 Descrip ...
- FIREDAC连接MSSQL 2000报不能支持连接MSSQL2000及更低版本的解决办法
FIREDAC连接MSSQL 2000的时候会报错,原因是MSSQL CLIENT11或MSSQL CLIENT10客户端驱动程序已经不支持连接MSSQL2000及更低版本的数据库. 解决办法: 设置 ...
- Spring 使用注解方式进行事物管理
大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都 ...
- 需要熟记的git命令
需要熟记的github常用命令 总结一下ubuntu下github常用的命令,设置部分跳过,假设repository的名字叫hello-world: .创建一个新的repository: 先在gith ...
- 001_bytearray
bytearray([source [, encoding [, errors]]]) 中文说明: bytearray([source [, encoding [, errors]]])返回一个byt ...
- 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作
window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...
- java对象转JSON JS取JSON数据
JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new PropertyFilter() { @Override ...
- 高级I/O之记录锁
若两个人同时编辑一个文件,其后果将如何呢?在很多UNIX系统中,该文件的最后状态取决于写该文件的最后一个进程.但是对于有些应用程序(例如数据库),进程有时需要确保它正在单独写一个文件.为了向进程提供这 ...