poj 1144 Network 图的割顶判断模板
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 8797 | Accepted: 4116 |
Description
each place the lines end in a telephone exchange. There is one telephone exchange in each place. From each place it is
possible to reach through lines every other place, however it need not be a direct connection, it can go through several exchanges. From time to time the power supply fails at a place and then the exchange does not operate. The officials from TLC realized that
in such a case it can happen that besides the fact that the place with the failure is unreachable, this can also cause that some other places cannot connect to each other. In such a case we will say the place (where the failure
occured) is critical. Now the officials are trying to write a program for finding the number of all such critical places. Help them.
Input
to which there is a direct line from this place. These at most N lines completely describe the network, i.e., each direct connection of two places in the network is contained at least in one row. All numbers in one line are separated
by one space. Each block ends with a line containing just 0. The last block has only one line with N = 0;
Output
Sample Input
5
5 1 2 3 4
0
6
2 1 3
5 4 6 2
0
0
Sample Output
1
2
Hint
//题意,给一个图,求图中割顶的个数~~~
#include "stdio.h" //poj 1144 割顶的判断模板
#include "vector"
#include "string.h"
using namespace std; #define N 105
vector<int> a[N];
int root;
int low[N],dfn[N];
bool visit[N],mark[N];
int MIN(int x,int y) { return x<y?x:y; } void DFS(int x,int times)
{
int i;
int count = 0;
visit[x] = true;
low[x] = dfn[x] = times;
for(i=0; i<a[x].size(); ++i)
{
int y = a[x][i];
if(!visit[y])
{
count++;
DFS(y,times+1);
low[x] = MIN(low[x],low[y]);
if(x==root && count==2) mark[root] = true; //如果x为根节点,并且子树有两个或两个以上,则为割顶!
if(x!=root && low[y]>=dfn[x]) mark[x] = true; //如果x的子树中没有节点连接x的祖先(有的话low[x]会变小),则为割顶!
}
else
low[x] = MIN(low[x],dfn[y]);//更新low[x]的值!
}
} int main()
{
int n;
int i,j;
char ch;
while(scanf("%d",&n),n!=0)
{
int x,y;
for(i=0; i<N; ++i)
a[i].clear();
while(scanf("%d",&x),x!=0)
{
while(scanf("%c",&ch) && ch==' ')
{
scanf("%d",&y);
a[y].push_back(x);
a[x].push_back(y);
}
}
root = 1;
int times = 1;
memset(mark,false,sizeof(mark)); //标记点是否是割顶
memset(visit,false,sizeof(visit)); //标记点是否已访问 DFS(root,times);
int ans = 0;
for(i=1; i<=n; ++i)
{
if(mark[i]) ans++; //统计割顶个数
}
printf("%d\n",ans);
}
return 0;
}
poj 1144 Network 图的割顶判断模板的更多相关文章
- 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
Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. ...
- POJ 1144 Network【割顶】
学习的这一篇:https://www.byvoid.com/blog/biconnect 割顶:对于无向图G,如果删除某个点u后,连通分量数目增加,称u为图的关节点或者割顶 u为割顶的条件: (1)u ...
- POJ 1144 Network(Tarjan求割点)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12707 Accepted: 5835 Descript ...
- POJ1144 Network 无向图的割顶
现在打算重新学习图论的一些基础算法,包括像桥,割顶,双连通分量,强连通分量这些基础算法我都打算重敲一次,因为这些量都是可以用tarjan的算法求得的,这次的割顶算是对tarjan的那一类算法的理解的再 ...
- POJ 1144 Network(无向图连通分量求割点)
题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...
- POJ 1144 Network (求割点)
题意: 给定一幅无向图, 求出图的割点. 割点模板:http://www.cnblogs.com/Jadon97/p/8328750.html 分析: 输入有点麻烦, 用stringsteam 会比较 ...
- poj 1144 Network 【求一个网络的割点的个数 矩阵建图+模板应用】
题目地址:http://poj.org/problem?id=1144 题目:输入一个n,代表有n个节点(如果n==0就结束程序运行). 在当下n的这一组数据,可能会有若干行数据,每行先输入一个节点a ...
随机推荐
- ok6410 android driver(3)
This article discusses the Makefile and how to port the module to different platform (localhost and ...
- 字符串hash - POJ 3461 Oulipo
Oulipo Problem's Link ---------------------------------------------------------------------------- M ...
- 根据IP地址获取地址所在城市帮助类(IPHelper)
很多类库都是需要在长时间的编写过程中进行积累的,进入软件编程行业已经是第五个年头了,从2011年写下第一行代码到现在不知道已经写了多少行代码了,时间也过得挺快的.最近事情比较多,也很少写博客了,最近项 ...
- LeetCode128:Longest Consecutive Sequence
题目: Given an unsorted array of integers, find the length of the longest consecutive elements sequenc ...
- 安装性能测试工具:sysbench和使用apache的ab
一.软件的用途,它主要包括以下几种方式的测试:1.cpu性能2.磁盘io性能3.调度程序性能4.内存分配及传输速度5.POSIX线程性能6.数据库性能(OLTP基准测试) 这个软件为什么找不到官网呢? ...
- windows下使用makecert命令生成自签名证书
1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...
- CSS3随内容自动伸缩的背景
CSS3给我们带来一个非常实用的新属性:border-image,利用这个属性我们可以做出随着内容的增减自动伸缩的背景.废话不多说,看代码! HTML: <ol> <li>第一 ...
- CSS后代选择器,子选择器和相邻兄弟选择器
平时在代码练习中,经常用到后代选择器,子选择器也会用到,这里做个总结: 1,后代选择器和子选择器区别: ①写法不一样:后代选择器的标识为:空格 如:ul li{width:150px;} [ul和li ...
- 读书笔记2014第6本:《The Hunger Games》
以前从未读过一本完整的英文小说,所有就在今年的读书目标中增加了一本英文小说,但在头四个月内一直没有下定决定读哪一本.一次偶然从SUN的QQ空间中看到Mockingjay,说是不错的英文小说,好像已经是 ...
- 如何启动或关闭oracle的归档(ARCHIVELOG)模式
参考文献: http://www.eygle.com/archives/2004/10/oracle_howtoeci.html 1.管理员身份连接数据库 C:\Users\Administrator ...