模板_poj1523SPF_割点以及点连通分支
来源:互联网 发布:数学老师知乎 编辑:程序博客网 时间:2024/06/05 06:32
poj1523题目链接
题意:
图中是否有割点,去掉某个割点后有几个连通分量。
block[i]是去掉割点i后的连通分支个数。
割点:去掉这个点后,连通分支数比没去点这个点的连通分支数多1
但是根(根节点并且是割点的时候)节点的连通分量要比其他割点的连通分量的初始值少1
#include<stdio.h>#include<string.h>#include<vector>using namespace std;#define min(a,b) a<b?a:b #define max(a,b) a>b?a:bvector<int>e[1005];int low[1005];int dfn[1005];int time,n;int block[1005];int count;void tarjan(int u){int i,v;dfn[u]=low[u]=++time;for(i=0;i<e[u].size();i++){v=e[u][i];if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);if(dfn[u]<=low[v]) block[u]++;}else low[u]=min(low[u],dfn[v]);}} int main(){int i,u,v;while(~scanf("%d",&u)&&u){for(i=0;i<1005;i++) e[i].clear(); n=0;time=0;memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));scanf("%d",&v);n=max(max(n,u),v);e[u].push_back(v);e[v].push_back(u);while(scanf("%d",&u)&&u){scanf("%d",&v);n=max(max(n,u),v);e[u].push_back(v); e[v].push_back(u);} for(i=1;i<=n;i++) block[i]=1; block[1]=0; tarjan(1); printf("Network #%d\n",++count); int flag=0; for(i=1;i<=n;i++) if(block[i]>1) { printf(" SPF node %d leaves %d subnets\n",i,block[i]); flag=1; } if(!flag) printf(" No SPF nodes\n");printf("\n"); }return 0;}
0 0
- 模板_poj1523SPF_割点以及点连通分支
- 割点_去掉割点后的连通分支数(点连通图)
- 无向连通图 割点 桥 模板
- poj1523 割点+连通分量
- 割点,割边模板
- 割点&割边模板
- 割点 割边 模板
- 割点,桥模板
- 割点模板
- poj1144 割点模板
- 割点(模板)
- 割点(模板)
- 割点(模板)
- P3388 【模板】割点
- 割点、桥模板
- 割点 模板
- 割点、割边、强连通分量
- 强连通分量 & 割点/桥 & 点/边双连通分量 [模板]
- 排序算法之快速排序
- idea中的代码简单调试debug
- iOS 随机打乱一个数组的顺序 获得一个新的数组
- qt中路径的解释
- H5中<header><footer><nav>与<div>的区别
- 模板_poj1523SPF_割点以及点连通分支
- Til the Cows Come Home POJ
- 凡是某单元有特定字符的,则删除整行 (VBA )
- 第一二类斯特林数,bell数
- Glassfish-MariaDB
- 织梦首页调用单页栏目内容和文章内容的几种方法
- VMware下minimal CentOS7 安装VMware tools
- Android技术积累汇总(7月19日更新)
- js基本知识比较系列四:动画