poj 1144 Network(割点 入门)
Network
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10907 Accepted: 5042 Description
A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting several places numbered by integers from 1 to N . No two places have the same number. The lines are bidirectional and always connect together two places and in 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
The
input file consists of several blocks of lines. Each block describes
one network. In the first line of each block there is the number of
places N < 100. Each of the next at most N lines contains the number
of a place followed by the numbers of some places 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
The output contains for each block except the last in the input file one line containing the number of critical places.Sample Input
5
5 1 2 3 4
0
6
2 1 3
5 4 6 2
0
0Sample Output
1
2Hint
You need to determine the end of one line.In order to make it's easy to determine,there are no extra blank before the end of each line.Source
模板~
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
const int MAXN = ;
const int MAXM = ;
struct Edge
{
int to,next;
bool cut;
} edge[MAXM];
int head[MAXN],tot;
int Low[MAXN],DFN[MAXN],Stack[MAXN],Belong[MAXN];
int Index,top;
bool Instack[MAXN],cut[MAXN];
int bridge,add_block[MAXN]; void addedge(int u,int v)
{
edge[tot].to = v;
edge[tot].next = head[u];
edge[tot].cut = false;
head[u] = tot++;
}
void Tarjan(int u,int pre)
{
int v;
Low[u] = DFN[u] = ++Index;
Stack[top++] = u;
Instack[u] = true;
int son = ;
for(int i = head[u]; i != -; i = edge[i].next)
{
v = edge[i].to;
if(v == pre)
continue;
if( !DFN[v] )
{
son++;
Tarjan(v,u);
if(Low[u] > Low[v]) Low[u] = Low[v]; if(Low[v] > DFN[u])
{
bridge++;
edge[i].cut = true;
edge[i^].cut = true;
} if(u != pre && Low[v] >= DFN[u])
{
cut[u] = true;
add_block[u]++;
}
}
else if(Instack[v] && Low[u] > DFN[v])
Low[u] = DFN[v];
}
if(u == pre && son > ) cut[u] = true;
if(u == pre) add_block[u] = son -;
Instack[u] = false;
top--;
}
void solve(int N)
{
memset(DFN,,sizeof(DFN));
memset(Instack,false,sizeof(Instack));
memset(add_block,,sizeof(add_block));
memset(cut,false,sizeof(cut));
Index = top = bridge = ;
for(int i = ; i <= N; i++)
if( !DFN[i])
Tarjan(i,i);
int ans = ;
for(int i = ; i <= N; i++)
if(cut[i])
ans++;
printf("%d\n",ans);
}
void init()
{
tot = ;
memset(head,-,sizeof(head));
}
int main(void)
{
int n;
int maze[][];
while(scanf("%d",&n),n)
{
char ss[];
init();
memset(maze,,sizeof(maze));
getchar();
while(cin.getline(ss,),ss[] != '')
{
int u = ,cur = ,l = (int)strlen(ss);
while(ss[cur] != ' ' && cur < l)
{
u*= ;
u += ss[cur] - '';
cur++;
}
int v;
while(ss[cur] && cur < l)
{
v = ;
while(ss[cur] != ' ' && cur < l)
{
v*= ;
v += ss[cur] - '';
cur++;
}
maze[u][v] = maze[v][u] = ;
cur++;
}
}
for(int i = ; i <= n; i++)
for(int j = ; j < i; j++)
if(maze[i][j])
{
addedge(i,j);
addedge(j,i);
}
solve(n);
}
return ;
}
poj 1144 Network(割点 入门)的更多相关文章
- poj 1144 Network(割点)
题目链接: http://poj.org/problem?id=1144 思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| ...
- POJ 1144 Network(无向图连通分量求割点)
题目地址:id=1144">POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u ...
- POJ 1144 Network(Tarjan求割点)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12707 Accepted: 5835 Descript ...
- poj 1144 Network 图的割顶判断模板
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8797 Accepted: 4116 Descripti ...
- poj 1144 Network(无向图求割顶数)
题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...
- poj 1144 Network 【求一个网络的割点的个数 矩阵建图+模板应用】
题目地址:http://poj.org/problem?id=1144 题目:输入一个n,代表有n个节点(如果n==0就结束程序运行). 在当下n的这一组数据,可能会有若干行数据,每行先输入一个节点a ...
- poj 1144 Network【双连通分量求割点总数】
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11042 Accepted: 5100 Descript ...
- POJ 1144 Network(tarjan 求割点个数)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17016 Accepted: 7635 Descript ...
- poj 1144 Network 无向图求割点
Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. Th ...
随机推荐
- Apache添加多端口及实现单ip多端口映射的方法
这篇文章主要介绍了Apache添加多端口及实现单ip多端口映射的方法的相关资料,需要的朋友可以参考下(http://www.0831jl.com) 先给大家说下apache添加多端口的方法,具体步骤如 ...
- threading.local在flask中的用法
一.介绍 threading.local的作用: 多个线程修改同一个数据,复制多份变量给每个线程用,为每个线程开辟一块空间进行数据的存储,而每块空间内的数据也不会错乱. 二.不使用threading. ...
- PHP面向对象访问修饰符的基本了解
l 文档的介绍: 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义 ...
- enctype="multipart/form-data"的form传参
1.jsp <li class="btns"><input id="btnImport" class="btn btn-primar ...
- java主函数参数传递args
a.javaJava应用程序的主入口方法main(String[] args),表示该方法需要接收一个字符串数组类型的参数, 如果该参数不指定,agrs接收的是null. 程序: public C ...
- <数据库>MySQL补充( 查询)
show create table 表名 \G;(查看创建的属性) alter table 表名 auto_increment=xx;(修改自增起始值) set session auto_increm ...
- C#控件的闪烁问题解决方法总结
最近对代码作了一些优化,试验后效果还可以,但是发现界面会闪烁,具体是TreeView控件会闪烁,语言为C#,IDE为VS2005.在查阅一些资料,使用了一些基本技术后(如开启双缓冲),发现没什么效果. ...
- tomcat结构图
- HBase 面向列的存储
- python configparser模块详解
此模块提供了一个实现基本配置语言的类 首先来看一个非常基本的配置文件,如下所示格式: [DEFAULT] ServerAliveInterval = 45 Compression = yes Comp ...