求割点
来源:互联网 发布:淘宝客如何做免单活动 编辑:程序博客网 时间:2024/06/06 18:19
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int M=10000;struct node{ int to,next;}e[M];int dfn[110],low[110];int head[110],vis[110];int cnt[110];int m,ci,root;void add(int u,int v)//链式前向星{ e[ci].to=v; e[ci].next=head[u]; head[u]=ci++;}void dfs(int u,int father,int a){ int son=0; vis[u]=1; dfn[u]=low[u]=a; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].to; if(vis[v]==1&&v!=father) low[u]=min(low[u],dfn[v]); if(vis[v]==0) { dfs(v,u,a+1); son++; low[u]=min(low[u],low[v]); if((u==root&&son>1)||(u!=root&&dfn[u]<=low[v])) cnt[u]=1; } } vis[u]=2;}int main(){ while(scanf("%d",&m),m) { memset(head,-1,sizeof(head)); memset(vis,0,sizeof(vis)); memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); memset(cnt,0,sizeof(cnt)); int n; ci=0; while(scanf("%d",&n),n) { while(getchar()!='\n') { int a; scanf("%d",&a); add(a,n); add(n,a); } } root=1; int sum=0; dfs(1,-1,1); for(int i=1;i<=m;i++) if(cnt[i]) sum++; printf("%d\n",sum); } return 0;}
阅读全文
0 0
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- POJ1523求割点
- 求割点个数
- tarjan求割点
- 求割点模版
- lightoj1063【求割点】
- Tarjan求割点
- Tarjan求割点
- UVA 315 Network 求割点、套版题 求割点
- POJ 1523 SPF //求割点
- POJ1144 Network 求割点
- tarjan求割点 poj 1144
- 多项式计算//线性表练习
- Qt各种采样率录音 录音到内存
- ImageLoader的工具类
- ajax 中的contentType
- 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要
- 求割点
- 数据结构线性表顺序结构的定义与实现C语言
- [SDS阅读理解/0]前言
- 04java基础之异常,泛型
- es6 多个模块export import
- Pyhton 3 学习笔记 2017.11.18
- 3-7 类的友元函数的应用
- Java中List转换为数组,数组转List
- 平稳VAR模型一