POJ1144 Network(判断割点)
来源:互联网 发布:破解软件分享平台 编辑:程序博客网 时间:2024/05/21 08:57
题目链接“点击打开链接
判断割点的个数
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>const int N = 210;const int maxn = 500;const int maxm = 21010;const int inf = 1e8;#define MIN INT_MIN#define MAX 1e6#define LL long long#define init(a) memset(a,0,sizeof(a))#define FOR(i,a,b) for(int i = a;i<b;i++)#define max(a,b) (a>b)?(a):(b)#define min(a,b) (a>b)?(b):(a)using namespace std;int DFN[maxn],low[maxn],head[maxn];bool dian[maxn];int bianhao,n,bnum,root,vis[maxn];int gedian[maxn],ge;struct edge{ int v,next;}edge[maxm];void add(int u,int v){ edge[bnum].v=v; edge[bnum].next=head[u]; head[u]=bnum++;}void tarjan(int u,int father)//判定割点{ int son=0; vis[u]=1;//标记 DFN[u]=low[u]=bianhao++; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].v; if(vis[v]==1 && v!=father) low[u]=min(low[u],DFN[v]); if(vis[v]==0) { tarjan(v,u); son++; low[u]=min(low[u],low[v]); if((u==root && son>1 ) || (u!=root && DFN[u]<=low[v]))//判定割点的条件 { dian[u]=1; } } } vis[u]=2;//去掉}void initt(){ memset(head,-1,sizeof(head)); init(DFN);init(low); init(vis);init(dian); bnum=0;bianhao = 1;//ge = 0;}int main(){ int a,b; while(scanf("%d",&n),n) { initt(); while(scanf("%d",&a),a) { while(getchar()!='\n') { scanf("%d",&b); add(a,b); add(b,a); } } root=1; tarjan(1,-1); int ans = 0; FOR(i,1,n+1) { if(dian[i]!=0) { ans++; // gedian[ge++] = i; } } cout<<ans<<endl; // puts("割点是"); /* printf("ge = %d\n",ge); FOR(i,0,ge) printf("%d ",gedian[i]); printf("\n");*/ } return 0;}
0 0
- POJ1144 Network(判断割点)
- poj1144--D - Network(连通分量,割点)
- poj1144 Network(割顶)
- POJ1144-Network(割顶模板题)
- POJ1144.Network——无向图的割点
- poj1144 割点模板
- poj1144——割点
- 割点和桥 poj1144
- poj1144-Network(求割点)
- poj1144( 求割点数)
- POJ1144-求图的割点(裸)
- poj1144 求图的割点
- POJ1144——Tarjan+计算割点
- poj1144 求图的割点--模板
- POJ1144--Network(Tarjan求割点)
- [POJ1144]Network(tarjan求割点)
- poj1144 Network
- poj1144 Network
- C++设计模式之适配器模式(一)
- 编译与解释
- 当程序员遇到硬盘损坏导致代码丢失时心理变化的5个阶段
- JAVA IO 详解2
- linux shell学习(二)
- POJ1144 Network(判断割点)
- Android内存管理之道
- Handler、Looper、MessageQueue深入解析
- 子DIV使用float后撑不开父DIV的问题
- wxpython 文件夹选择对话框 DirDialog
- 傅里叶变换的意义,理解
- count、find、binary_search、lower_bound、upper_bound
- SQLite中的时间日期函数(转)
- android start activity getIntent 返回异常的问题