POJ 1523 SPF (割点)
来源:互联网 发布:局域网未识别的网络 编辑:程序博客网 时间:2024/05/15 11:01
题目来源:http://poj.org/problem?id=1523
判断割点算法详见博客:http://blog.csdn.net/moon_sky1999/article/details/78169738
统计图中割点能够将图分割成的联通块的个数,也就是在处理节点cur的时候,统计其无法连回cur上面的节点的子树的个数。
代码:
#include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn=1e3+10;int n=0;vector<int> v[maxn];int dfn[maxn];int low[maxn];bool cut[maxn];int vis[maxn];int tot[maxn];void cut_bridge(int cur,int fa,int dep){vis[cur]=1;tot[cur]++;dfn[cur]=low[cur]=dep;int children=0;for(int i=0;i<v[cur].size();i++){int x=v[cur][i];if(vis[x]==1&&x!=fa){if(dfn[x]<low[cur])low[cur]=dfn[x];}if(vis[x]==0){cut_bridge(x,cur,dep+1);children++;if(low[x]<low[cur])low[cur]=low[x];if((fa==-1&&children>1)||(fa!=-1&&low[x]>=dfn[cur])){cut[cur]=1;tot[cur]++;}}}vis[cur]=2;}int main(){ios::sync_with_stdio(0);cin.tie(0);int x,y;cin>>x;int sce=0;while(x){sce++;n=0;memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(tot,0,sizeof(tot));memset(cut,0,sizeof(cut));memset(vis,0,sizeof(vis));for(int i=0;i<maxn;i++)v[i].clear();while(x){cin>>y;n=max(n,x);n=max(n,y);v[x].push_back(y);v[y].push_back(x);cin>>x;}for(int i=1;i<=n;i++){if(vis[i]==0){cut_bridge(i,-1,0);}}int num=0;for(int i=1;i<=n;i++)if(cut[i])num++;cout<<"Network #"<<sce<<endl;if(num==0)cout<<" No SPF nodes"<<endl;else{for(int i=1;i<=n;i++){if(cut[i]){cout<<" SPF node "<<i<<" leaves "<<tot[i]<<" subnets"<<endl;}}}cout<<endl;cin>>x;}return 0;}
阅读全文
0 0
- 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(割点)
- POJ 1523 SPF【割点】
- POJ 1523 SPF 割点
- POJ 1523 SPF (割顶 点双连通分量)
- POJ 1523 SPF(割点,分块,tarjan)
- Poj 1523 SPF(割点 + tarjan算法)
- TOJ 2018 POJ 1523 SPF / 割点
- POJ 1523 SPF 割边与割点
- POJ 1523 SPF(割点所割连通分量数)
- POJ 1523 SPF(割点所割连通分量数)
- Java的基础字符串的一些方法
- Java API操作Hive
- Gym 100206B Fire station building(三分)
- el表达式的内置对象
- Java设计模式之模板设计模式
- POJ 1523 SPF (割点)
- python_lintcode_697Check Sum of Square Numbers_114不同的路径
- 第三周-项目1-顺序表的基本运算
- Html5(离线&存储,多媒体,Web Sockets,Web Workers,History API2D/3D绘图)
- memcache的一致性hash算法使用
- Java 课堂笔记 4
- 关于Icon,Image,ImageIcon的简单的对比参考
- 2017-10-7离线赛题解
- SDUT_2449_数据结构实验之栈与队列十:走迷宫