POJ 1144--Network 【无向图中割点总数】
来源:互联网 发布:服装画图软件x3 编辑:程序博客网 时间:2024/05/16 13:07
Network
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 10764 Accepted: 4978
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.
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;
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
55 1 2 3 4062 1 35 4 6 200
Sample Output
12
Hint
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.
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <stack>#define maxn 1000+10#define maxm 2000000+10using namespace std;struct node { int u, v, next;};node edge[maxm];int head[maxn], cnt;bool is_cut[maxn];int low[maxn], dfn[maxn];int dfs_clock;void init(){ cnt = 0; memset(head, -1, sizeof(head));}void addedge(int u, int v){ edge[cnt] = {u, v, head[u]}; head[u] = cnt++; edge[cnt] = {v, u, head[v]}; head[v] = cnt++;}void tarian(int u, int fa){ low[u] = dfn[u] = ++dfs_clock; int son = 0; for(int i = head[u]; i != -1; i = edge[i].next){ int v = edge[i].v; if(!dfn[v]){ son++; tarian(v, u); low[u] = min(low[u], low[v]); if( u != fa && low[v] >= dfn[u]) is_cut[u] = true; } else low[u] = min(low[u], dfn[v]); } if(fa == u && son > 1) is_cut[u] = true;}void find(int l, int r){ memset(low, 0, sizeof(low)); memset(dfn, 0, sizeof(dfn)); memset(is_cut, 0, sizeof(is_cut)); for(int i = l; i <= r; ++i) if(!dfn[i]) tarian(i, i);}int main (){ int n; while(scanf("%d", &n), n){ init(); int u, v; while(scanf("%d", &u), u){//输入方式一种小技巧 while(getchar() != '\n'){ scanf("%d", &v); addedge(u, v); } } find(1, n); int ans = 0; for(int i = 1; i <= n; ++i) if(is_cut[i]) ans++; printf("%d\n", ans); } return 0;}
1 0
- POJ 1144--Network 【无向图中割点总数】
- poj 1144 Network 【求无向图中割点总数】【点双联通入门题目】
- POJ 1144 Network 无向图求割点
- poj 1144 Network (无向图求割点)
- poj 1144 Network 无向图求割点
- POJ 1144 Network 无向图求割点Tarjan
- poj 1144 Network 无向图求割点
- poj 1144 Network 无向连通图求割点
- POJ 1144 Network (无向图求割点)
- POJ 1144 Network(简单求无向图割顶数)
- POJ 1144 Network(无向图连通分量求割点)
- POJ 1144 Network(简单求无向图割顶数)
- poj 1144 Network【无向图求割顶模板题】
- POJ 1144 Network(简单求无向图割顶数)
- poj 3694 Network 无向图求桥
- POJ 1144 - Network 用tarjan求无向图的割点
- zoj 1311 poj 1144 Network(无向图顶点联通度)
- 求无向图的割点 (poj 1144 Network)
- 视频改变教育
- java doc排除不需要的public method
- MyEclipse UTF-8环境设置
- oracle官网下载老版本jdk + 如何命令行下wget下载jdk
- 使用 /proc 文件系统来访问 Linux 内核的内容
- POJ 1144--Network 【无向图中割点总数】
- yum localinstall 解决本地rpm包的依赖问题,以及yum 命令常用方法
- 东风风神汽车4S店管理系统
- 基于 Red5 的流媒体服务器的搭建和应用
- MSSQL表分区的创建, 横向 纵向 多维度,多指标 分表
- 如何在spark中删除hdfs的某个文件夹
- Objective-C编码规范:26个方面解决iOS开发问题
- JDBC连接SQL Server数据库
- Java删除ArrayList中的重复元素的2种方法