POJ 1144 Network(Tarjan)
题意 : 找出割点个数。
思路 : Tarjan缩点,u是割点的充要条件是:u要么是具有两个以上子女的深度优先生成树的根,要么不是根,而有一个子女v满足low[v]>=dfn[u]。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std ; int head[],fb[],low[],dfn[];
int cnt,timee ,ans,son ;
struct node
{
int u ;
int v ;
int next ;
}p[]; void addedge(int u,int v)
{
p[cnt].u = u ;
p[cnt].v = v ;
p[cnt].next = head[u] ;
head[u] = cnt ++ ;
p[cnt].u = v ;
p[cnt].v = u ;
p[cnt].next = head[v] ;
head[v] = cnt ++ ;
}
void Init()
{
cnt = timee = ans = son = ;
memset(head,-,sizeof(head)) ;
memset(dfn,,sizeof(dfn)) ;
memset(low,,sizeof(low)) ;
memset(fb,,sizeof(fb)) ;
} void tarjan(int u)
{
dfn[u] = low[u] = ++timee ;
for(int i = head[u] ; i != - ; i = p[i].next)
{
int v = p[i].v ;
if(dfn[v]) low[u] = min(low[u],dfn[v]) ;
else
{
tarjan(v) ;
low[u] = min(low[v],low[u]) ;
if(low[v] >= dfn[u])
{
if(u == ) son ++ ;
else
fb[u] = ;
}
}
}
}
int main()
{
int n,m,s ;
while(~scanf("%d",&n))
{
if(n == )break ;
Init() ;
while( ~scanf("%d",&m))
{
if(m == ) break ;
while(getchar() != '\n')
{
scanf("%d",&s) ;
addedge(s,m) ;
}
}
tarjan() ;
if(son > ) ans ++ ;
for(int i = ; i <= n ; i++)
if(fb[i]) ans ++ ;
printf("%d\n",ans) ;
}
return ;
}
POJ 1144 Network(Tarjan)的更多相关文章
- POJ 1144 Network(Tarjan求割点)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12707 Accepted: 5835 Descript ...
- POJ 1144 Network(割点)
Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...
- POJ 1144 Network(tarjan 求割点个数)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17016 Accepted: 7635 Descript ...
- poj 1144 Network(无向图求割顶数)
题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...
- POJ 1144 Network(无向图的割顶和桥模板题)
http://poj.org/problem?id=1144 题意: 给出图,求割点数. 思路: 关于无向图的割顶和桥,这篇博客写的挺不错,有不懂的可以去看一下http://blog.csdn.net ...
- POJ 1144 Network (求割点)
题意: 给定一幅无向图, 求出图的割点. 割点模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 输入有点麻烦, 用stringsteam 会比较 ...
- POJ 1144 Network —— (找割点)
这是一题找无向图的割点的模板题,割点的概念什么的就不再赘述了.这里讲一下这个模板的一个注意点. dfs中有一个child,它不等于G[u].size()!理由如下: 如上图,1的size是2,但是它的 ...
- POJ 1861 Network (MST)
题意:求解最小生成树,以及最小瓶颈生成树上的瓶颈边. 思路:只是求最小生成树即可.瓶颈边就是生成树上权值最大的那条边. //#include <bits/stdc++.h> #includ ...
- POJ 1847 Tram (最短路径)
POJ 1847 Tram (最短路径) Description Tram network in Zagreb consists of a number of intersections and ra ...
随机推荐
- poj 1459 Power Network
题目连接 http://poj.org/problem?id=1459 Power Network Description A power network consists of nodes (pow ...
- golang:interface{}类型测试
在golang中空的interface即interface{}可以看作任意类型, 即C中的void *. 对interface{}进行类型测试有2种语法: 1. Comma-ok断言: value, ...
- iOS学习之UITableView
一.UITableView的概念 UITabelView继承于UIScrollView,可以滚动. @interface UITableView : UIScrollView <NSCoding ...
- iOS 进阶 第十五天(0417)
0417 创建UICollectionViewCell的Xib方法如下图 枚举定义导航跳转方式 js跳转到网页指定锚点 如下图所示:
- 如何在Swing窗体增删组件后及时刷新显示新界面
转自:http://blog.csdn.net/leeshuqing/article/details/8636211 关键的四行代码,连续调用窗体的四个方法即可: repaint();validate ...
- 转Oracle字符集问题总结
Oracle字符集问题总结 分类: Oracle2006-06-04 13:48 1298人阅读 评论(3) 收藏 举报 oracle数据库sqlcharacter存储insert 作者: vston ...
- python ndentationError: unexpected indent
python 缩进搞了好久,每次都自己看了没什么问题 IndentationError: unexpected indent 每次都是这个错误. 后来查资料是vimrc配置有点问题 我在写代码的时候用 ...
- shell基本语法备忘
1.第一行要写明shell种类 #!/bin/bash 2.打印输出 #!/bin/bashecho "Hello World !~" 3.变量定义 变量=前后不能有空格, ...
- java提供了native2ascii工具
可以使用这个工具,把中文编码称为ascii码 在命令行输入native2ascii 输入中文 得到数据
- 用C++编写一个随机产生多个两位数四则运算式子的简单程序
一 设计思想: 1.首先可以想到一个四则运算式子的组成:两个运算数和一个运算符: 2.两个运算数的随机由调用随机函数产生,其中可以设定运算数的范围: 3.一个运算符的随机产生可以分为加减乘除四种情况, ...