题意:给出一个无向图,求割点以及去除这个点后图分为几部分;

思路:割点定义:去掉该点后图将分成几个部分。割点:(1)当k为根节点且有>1个分支,则去除该点后图便被分成几个分支。(2)DFN[v]<Low[j]表示v的子节点不会有回路回到v的祖先。

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAXN 1005
#define MAXM 1005*1005
struct Edge
{
int to,next;
}edge[MAXM];
int Low[MAXN],DFN[MAXN],first[MAXN],son,vis[MAXN];
int n,count,cut[MAXN],tot,root;
void addedge(int v,int w)
{
edge[tot].to=w;
edge[tot].next=first[v];
first[v]=tot++;
}
void Tarjan(int v)
{
DFN[v]=Low[v]=++count;
for(int i=first[v];i!=-1;i=edge[i].next)
{
int j=edge[i].to;
if(!DFN[j])
{
Tarjan(j);
if(root==v)
{
son++;
if(son>1)
cut[v]=1;
}
else
{
Low[v]=min(Low[j],Low[v]);
if(DFN[v]<=Low[j])cut[v]=1;
}
}
else
{
Low[v]=min(Low[v],DFN[j]);
}
}
}
void dfs(int u)
{
vis[u]=1;
for(int i=first[u];i!=-1;i=edge[i].next)
{
int v=edge[i].to;
if(!vis[v])
{
dfs(v);
}
}
}
int main()
{
int x,y,t=0;
while(scanf("%d",&x),x)
{
t++;
memset(DFN,0,sizeof(DFN));
memset(first,-1,sizeof(first));
memset(Low,0,sizeof(Low));
memset(cut,0,sizeof(cut));
n=0;
scanf("%d",&y);
addedge(x,y);
addedge(y,x);
n=max(x,y);
count=0;
while(scanf("%d",&x),x)
{
scanf("%d",&y);
addedge(x,y);
addedge(y,x);
n=max(x,y);
} son=0;
root=1;
Tarjan(1);
printf("Network #%d\n",t);//cout<<1111<<endl;
int ans=0;
int flag=0;
for(int i=1;i<=n;i++)
{
if(cut[i]==1)
{
flag=1;
memset(vis,0,sizeof(vis));
vis[i]=1;
int son1=0;
for(int j=first[i];j!=-1;j=edge[j].next)
{
int k=edge[j].to;
if(!vis[k])
{
dfs(k);
son1++;
}
}
printf(" SPF node %d leaves %d subnets\n",i,son1);
}
} if(!flag)
printf(" No SPF nodes\n");
printf("\n");
}
return 0;
}

poj 1523求割点的更多相关文章

  1. poj 1523 求割点

    思路:对于所有节点,每次找的子树,key[root]++;输出时,对于根节点就输出key[root],对于其它节点i,输出key[i]+1; #include<iostream> #inc ...

  2. poj 1523 求割点把一个图分成几个联通部分

    #include<stdio.h> #include<string.h> #define N 1100 struct node { int u,v,next; }bian[N* ...

  3. Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题

    Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...

  4. POJ 1523 SPF 割点 Tarjan

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9317   Accepted: 4218 Description C ...

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

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

  6. poj 1144(求割点个数)

    题目链接:http://poj.org/problem?id=1144 思路:判断一个点是否是割点的两个条件:1.如果一个点v是根结点并且它的子女个数大于等于2,则v是割点.2.如果点v不是根结点,并 ...

  7. POJ 1523 SPF 割点与桥的推断算法-Tarjan

    题目链接: POJ1523 题意: 问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分 题解: Tarjan 算法模板题 顺序遍历整个图,能够得到一棵生成树: 树边:可理解为在DFS过 ...

  8. POJ 1144 Network(无向图连通分量求割点)

    题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...

  9. poj 1523 SPF(tarjan求割点)

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

随机推荐

  1. Aero问题

    有时候打开电脑会发现自己的桌面有点不一样,没有原来的好看.别着急,这是因为你的Aero没有正常启动.

  2. POJ1975 Median Weight Bead floyd传递闭包

    Description There are N beads which of the same shape and size, but with different weights. N is an ...

  3. 是什么让javascript变得如此奇妙

    What Makes Javascript Weird...and AWESOME -> First Class Functions -> Event-Driven Evironment ...

  4. 如何通过binlog获取我们想要的MySql语句?

    前言 MySql的binlog一般用于我们对数据的恢复,以及从数据库对主数据库的复制和更新. 假设此时我们有一个需要查询和读取Mysql最近操作DDL的信息,我们需要怎么处理? 聪明的你可能已经想到了 ...

  5. HDU-2017-字符串统计

    /* Name: HDU-2017-字符串统计 Date: 18/04/17 20:19 Description: 水过 */ #include<bits/stdc++.h> using ...

  6. HDU 6097---Mindis(二分)

    题目链接 Problem Description The center coordinate of the circle C is O, the coordinate of O is (0,0) , ...

  7. F数圈圈

    Description 幼儿园的小朋友对数字其实不是很感兴趣,他们更感兴趣的是形状,现在给你一个数字,小朋友都会数出其中一共有多少圆圈圈 Input 一个数字n长度不超过19位 Output 输出其中 ...

  8. 6,EasyNetQ-基于Topic的路由

    RabbitMQ具有非常酷的功能,基于主题的路由,允许订阅者基于多个标准过滤消息. 主题是与邮件一起发布的点分隔的单词列表. 例子是"stock.usd.nyse"或"b ...

  9. Python 装饰器总结

    装饰器总结 前提 使用装饰器的前提在于Python提供的特性: 函数即对象,可以进行传递: 函数可以被定义在另外一个函数中: 可以通过一个例子来了解: def get_animal(name='dog ...

  10. POSTMAN-REST Client

    下载方式:翻.墙安装     #使用的时候不用翻.墙 下载地址:https://chrome.google.com/webstore/search/postman%20rest%20client Po ...