POJ 1523 SPF 割点
来源:互联网 发布:移动数据不可用 编辑:程序博客网 时间:2024/05/01 07:26
题目链接
http://poj.org/problem?id=1523
题意
给定一图,问删除某个点后会出现几个连通块
思路
tarjan算法求出所有块,统计割点在几个块中出现过,即答案
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<string>#include<queue>#include<stack>#include<set>#include<map>#define ll long longusing namespace std;const int INF = ( 2e9 ) + 2;const ll maxn = 1e3+10;struct edge{ int u,v,next;}e[maxn*maxn];int head[maxn];int tot;int dfn[maxn],low[maxn],cnt[maxn];int index;bool vis[maxn],cut[maxn];stack<edge> s;void add(int u,int v){ e[tot].u=u; e[tot].v=v; e[tot].next=head[u]; head[u]=tot++;}void init(){ memset(head,-1,sizeof(head)); tot=0;}void tarjan(int u,int fa){ dfn[u]=low[u]=++index; int child=0; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].v; if(v==fa)continue; if(!dfn[v]) { s.push(e[i]); tarjan(v,u); child++; low[u]=min(low[u],low[v]); if(low[v]>=dfn[u]) { int x,y; memset(vis,0,sizeof(vis)); while(!s.empty()) { edge temp=s.top();s.pop(); x=temp.u,y=temp.v; if(!vis[x])cnt[x]++,vis[x]=1; if(!vis[y])cnt[y]++,vis[y]=1; if(x==u&&y==v)break; } cut[u]=true; } } else if(dfn[v]<dfn[u]) { low[u]=min(low[u],dfn[v]); s.push(e[i]); } } if(fa==-1) { if(child>1) { cut[u]=true; cnt[u]=child; } else { cut[u]=false; } }}void solve(int n){ memset(dfn,0,sizeof(dfn)); memset(cut,0,sizeof(cut)); memset(cnt,0,sizeof(cnt)); index=0; tarjan(1,-1); int f=0; for(int i=1;i<=n;i++) { if(cut[i]) printf(" SPF node %d leaves %d subnets\n",i,cnt[i]),f=1; } if(!f) { printf(" No SPF nodes\n"); } puts("");}int main(){ int u,v,n,cas=0; while(~scanf("%d",&u)&&u) { scanf("%d",&v); init(); add(u,v); add(v,u); n=max(u,v); while(scanf("%d",&u)&&(u)) { scanf("%d",&v); add(u,v); add(v,u); n=max(n,max(u,v)); } printf("Network #%d\n",++cas); solve(n); }}
阅读全文
0 0
- [割点] poj 1523 SPF
- POJ-1523 SPF 割点
- 【POJ】1523 SPF 割点
- POJ - 1523 SPF(割点)
- POJ--1523 SPF(割点)
- POJ 1523 SPF【割点】
- POJ 1523 SPF 割点
- POJ 1523 SPF (割点)
- Poj 1523 SPF(割点 + tarjan算法)
- TOJ 2018 POJ 1523 SPF / 割点
- POJ 1523 SPF(割点)
- POJ-1523 SPF (割点[Tarjan])
- POJ 1523 SPF (割点)
- POJ 1523 SPF 割边与割点
- POJ 1523 SPF(割点所割连通分量数)
- POJ 1523 SPF(割点所割连通分量数)
- POJ 1523 SPF(割点所割连通分量数)
- POJ 1523 SPF (割顶 点双连通分量)
- Android 工程内嵌资源文件的两种方法
- (转)规划从 OpenGL ES 2.0 到 Direct3D 的移植
- APP安全防护常见问题分析
- GL_INTERFACE使用及介绍
- leetcode 383. Ransom Note(C语言,堆排序,字符串匹配)28
- POJ 1523 SPF 割点
- 容器技术在云中如何定位
- 【原创】让VS2015与Win Flex Bison共舞
- 【原创】循环体并行优化(一)——循环迭代空间的仿射变换
- 【原创】循环体并行优化(二) ——多维循环迭代空间的仿射变换及循环上下界不等式的矩阵表示法
- 链表的单个节点的删除
- 【原创】Tensorflow Windows 安装逃坑记
- 【原创】线性代数学习笔记——剑桥食谱
- 【TensorFlow】tf.nn.conv2d实现卷积