无向图求割点,开始看题后不知道求什么,看了discussi才知道是求割点,然后就在网上找了找关于割点的知识。然后在http://blog.csdn.net/xinghongduo/article/details/6202646 这个大神的博客里看见关于割点知识和一些证明。
割点就是在一个图中,如果去掉某个顶点,及与它相关联的边后,这个图的联通分量增加了,那么这个点就是一个割点。
用dfn[v]来记录DFS遍历的深度,low[v]来记录v能遍历的最浅深度,然后对于点v来说:

1,如果v是根节点,并且它的子女数大于以及等于2个,那个v是割点;

2,如果v不是根节点,并且存在它的一个子女u,如果low[u]>=dfn[v],那么v是割点。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<queue>
#include<stack>
#include<vector>using namespace std;const int inf=0x7ffffff;
const double PI=acos(-1.0);
const double eps=1e-8;bool map[110][110];
int dfn[110];
int low[110];
int ans[110];
bool vis[110];
int deepth,root,n;void dfs(int f)
{dfn[f]=deepth;low[f]=deepth++;vis[f]=true;for(int i=1;i<=n;i++){if(map[f][i])  {if(!vis[i]){dfs(i);low[f]=min(low[f],low[i]);if(low[i]>=dfn[f] && f!=1)ans[f]++;else if(f==1) root++;}else low[f]=min(low[f],dfn[i]);}}
}
void init()
{memset(map,false,sizeof(map));memset(vis,false,sizeof(vis));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(ans,0,sizeof(ans));
}
int main()
{int m,a;char c;    while(~scanf("%d",&n),n){init();while(1){scanf("%d",&m);if(m==0)break;while(getchar()!='\n'){scanf("%d",&a);map[m][a]=map[a][m]=1; }   }deepth=1;root=0;dfs(1);int cnt=0;if(root>=2)cnt++;for(int i=2;i<=n;i++)if(ans[i])cnt++;printf("%d\n",cnt);}return 0;
}

POJ 1144 Network相关推荐

  1. POJ 1144 Network(无向图连通分量求割点)

    题目地址:POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u不为树根.那么(u,v)为树枝边. ...

  2. POJ 1144 Network 图论

    题目地址:http://poj.org/problem?id=1144 题目大意:多组数据,每组数据以0结束,文件也以0结束.对于每组数据第一行n表示点数,接下来至多n行,每行至多n个数,第i个数表示 ...

  3. POJ 1144 Network (求割点)

    题意: 给定一幅无向图, 求出图的割点. 割点模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 输入有点麻烦, 用stringsteam 会比较 ...

  4. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  5. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  6. Network POJ - 1144

    点击打开链接 套的啊哈算法上的板子 当初学割点割边板子都是靠背的.. 主要是时间戳这个东西不太理解 就是以某一点为根生成一棵搜索树 意义就是记录每个点的时间戳(感觉也可以理解为树的层数) 越靠后被遍历 ...

  7. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  8. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

  9. POJ - 1236 Network of Schools

    A number of schools are connected to a computer network. Agreements have been developed among those ...

最新文章

  1. Python os和os.path的基础知识与常用操作
  2. 腾讯上海某实验室SQL面试题——查询最后任职信息
  3. 后缀的形容词_巧记形容词后缀 第三弹
  4. WEB前端技术趋势图示-JS库
  5. python可以做哪些东西_自己总结的一些东西
  6. linux命令 ps -ef 的含义
  7. UIView的Touch事件UIControlEvents详解
  8. putty怎么拷贝Linux下的日志,linux 下的 putty 如何复制与粘贴?
  9. ITK简介与ITK Pipeline
  10. IAR下STM32工程建立基本步骤
  11. sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_Tableau基础如何合并你的数据?理解与逻辑(上)...
  12. VUE:element ui组件应用之个人中心页面
  13. shell的正向和反向
  14. 如何快速将pdf转换成excel转换器
  15. 基于socket的联机五子棋
  16. GYM 100827 A.Runes(水~)
  17. unity打包报错,又是血压升高的一天
  18. 观众关注人数超4万,CIOE信息通信展热度持续高涨
  19. 空间三点定圆的解算过程
  20. 根据不同的厂商,分析师和IT用户对云计算的理解,我们将云计算细分以下几类?

热门文章

  1. 混凝土试块送检要求与时间
  2. 数据标准化方法z-score讲解(matlab)
  3. spring cache注解@Cacheable参数key赋值
  4. 入手评测 联想小新PRO14,华硕灵耀14s和联想YOGA14s选哪个
  5. Wijmo JavaScript UI 5.20222.877 Crack
  6. VPN 虚拟专用网络隧道
  7. 微软官方外挂,让你的win10更加好用
  8. win10怎么给多个桌面屏幕设置不同壁纸
  9. 某个个人公众号阅读量和点赞数分析
  10. py实战绘制人口金字塔图