[poj 1144]Network[Tarjan求割点]
题意:
求一个图的割点. 输入略特别: 先输入图中点的总数, 接下来每一行首先给出一个点u, 之后给出一系列与这个点相连的点(个数不定). 行数也不定, 用0作为终止.
这样的输入还是要保证以数字读入吧...gets没前途的
思路:
割点的模板啦~
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 105;
bool vis[MAXN],iscut[MAXN];
int dfn[MAXN],low[MAXN],head[MAXN],num,Index,n;
struct pool
{
int v,pre;
}p[MAXN*50]; void clear()
{
memset(vis,false,sizeof(vis));
memset(iscut,false,sizeof(iscut));
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(head,0,sizeof(head));
memset(p,0,sizeof(p));
num = Index = 0;
} void add(int u, int v)
{
p[++num].v = v;
p[num].pre = head[u];
head[u] = num;
} void Tarjan(int u)
{
dfn[u] = low[u] = ++Index;
for(int tmp = head[u],k;k = p[tmp].v,tmp;tmp = p[tmp].pre)
{
if(!dfn[k])
{
Tarjan(k);
if(low[k] >= dfn[u])
iscut[u] = true;
low[u] = min(low[u], low[k]);
}
else
low[u] = min(low[u], dfn[k]);
}
} int cal()
{
int ret = 0;
for(int i=1;i<=n;i++)
{
if(iscut[i]) ret++;
}
return ret;
} int main()
{
while(scanf("%d",&n)==1 && n)
{
clear();///多少次...编写了你却忘记调用...
int u,v;
char c;
while(1)
{
scanf("%d%c",&u,&c);
if(!u) break;
while(1)
{
scanf("%d%c",&v,&c);
add(u,v);
add(v,u);
if(c=='\n') break;
}
}
int cnt = 0;
dfn[1] = Index = 1;
for(int tmp = head[1],k;k = p[tmp].v,tmp;tmp = p[tmp].pre)
{
if(!dfn[k])
{
cnt++;
Tarjan(k);
}
}
iscut[1] = cnt>1 ;
printf("%d\n",cal());
}
}
[poj 1144]Network[Tarjan求割点]的更多相关文章
- poj 1144 (Tarjan求割点数量)
题目链接:http://poj.org/problem?id=1144 描述 一个电话线公司(简称TLC)正在建立一个新的电话线缆网络.他们连接了若干个地点分别从1到N编号.没有两个地点有相同的号码. ...
- poj 1144 Network 无向图求割点
Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. Th ...
- 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 ...
- POJ 1523 SPF tarjan求割点
SPF Time Limit: 1000MS Memory Limit ...
- POJ 3694 Network(Tarjan求割边+LCA)
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10969 Accepted: 4096 Descript ...
- POJ 1144 Network —— (找割点)
这是一题找无向图的割点的模板题,割点的概念什么的就不再赘述了.这里讲一下这个模板的一个注意点. dfs中有一个child,它不等于G[u].size()!理由如下: 如上图,1的size是2,但是它的 ...
- POJ 1144 Network(Tarjan求割点)
Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12707 Accepted: 5835 Descript ...
- poj 1523 SPF(tarjan求割点)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
随机推荐
- POJ22230 Watchcow (欧拉回路)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6477 Accepted: 2823 Specia ...
- More is better(并差集)
More is better Time Limit : 5000/1000ms (Java/Other) Memory Limit : 327680/102400K (Java/Other) To ...
- android假设重写onDraw实现一个相似TextView能够显示表情和链接的控件(一)
先看效果图: 写一个超连接支持的对象: /**作为超连接显示的对象*/ public class LinkInfo implements Comparable<LinkInfo>{ pri ...
- Ruby中,&:(ampersand colon)的用法
前几日看Ruby代码,发现一个奇怪的用法,如下: a=['a', 'b', 'c'].map! &:upcase p a #["A", "B", &qu ...
- java排列
排列:它可以被看作是多个相同类型的数据的组合,这些数据的统一管理. 1.声明. 创建 一维:type[] var 比如:int[] a或 int a[]: 数组名= new 数组元素的类型[数组 ...
- powershell 将文本转换成表格的还有一种方式
$text=" 1 梦幻西游 216406 2014-01-21 资料片 2 炉石传说 15905 2014-01-24 公測 3 新大话西游 214465 2002-08-01 公測 4 ...
- 嵌套iframe中的HTML的文档解析类型
问题:页面整个刷新时,IE11输入框显示的宽度和高度正常,对页面中的iframe部分刷新时,IE11输入框的宽度和高度就变小了. 原因:网页的头部定义了文档类型<!DOCTYPE html> ...
- 输出jq对象
console.log($()); 效果截图:
- AsyncResult
private static long CalculateFolderSize(string FolderName){ return FolderName.Length;} public delega ...
- SQL语句函数详解__sql聚合函数
函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:单行函数.组函数 本文将讨论如何使用单行函数及 ...