题目大意:有向图求割点

题目思路:

一个点u为割点时当且仅当满足两个两个条件之一:

1.该点为根节点且至少有两个子节点

2.u不为树根,且满足存在(u,v)为树枝边(或称 父子边,即u为v在搜索树中的父亲),使得 dfn(u)<=low(v)。

然后注意读入,很容易RE

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<vector>
#include<iostream>
#include<algorithm>
#define MAXSIZE 1005
#define LL long long using namespace std; int vis[MAXSIZE],Map[MAXSIZE][MAXSIZE],low[MAXSIZE],dfn[MAXSIZE],pre[MAXSIZE],Time,n,ans,son; void Tarjan(int u,int fa)
{
pre[u]=fa;
low[u]=dfn[u]=++Time;
for(int i=; i<=n; i++)
{
if(!Map[u][i] || u==i) continue;
if(!dfn[i])
{
Tarjan(i,u);
low[u]=min(low[u],low[i]);
}
else if(fa!=i)
{
low[u]=min(low[u],dfn[i]);
}
}
} void Init()
{
memset(Map,,sizeof(Map));
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(vis,,sizeof(vis));
memset(pre,,sizeof(pre));
Time=;
ans=;
son=;
} int main()
{
int a,b;
char ch,op;
while(scanf("%d",&n),n)
{
Init();
getchar();
while(scanf("%d",&a),a)
{
while(scanf("%d%c",&b,&op))
{
Map[a][b]=Map[b][a]=;
if(op=='\n') break;
}
}
Tarjan(,);
for(int i=;i<=n;i++)
{
if(pre[i]==)
son++;
else if(dfn[pre[i]] <= low[i])
vis[pre[i]]=;
}
if(son > ) ans++;
for(int i=;i<=n;i++)
if(vis[i]) ans++;
printf("%d\n",ans);
}
return ;
}

UVA315 Network 连通图割点的更多相关文章

  1. uva-315.network(连通图的割点)

    本题大意:求一个无向图额割点的个数. 本题思路:建图之后打一遍模板. /**************************************************************** ...

  2. TZOJ 2999 Network(连通图割点数量)

    描述 A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting ...

  3. UVA315 Network —— 割点

    题目链接:https://vjudge.net/problem/UVA-315 A Telephone Line Company (TLC) is establishing a new telepho ...

  4. [UVA315]Network(tarjan, 求割点)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. TZOJ 2018 SPF(连通图割点和分成的连通块)

    描述 Consider the two networks shown below. Assuming that data moves around these networks only betwee ...

  6. uva315(求割点数目)

    传送门:Network 题意:给出一张无向图,求割点的个数. 分析:模板裸题,直接上模板. #include <cstdio> #include <cstring> #incl ...

  7. POJ1144 Network(割点)题解

    Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...

  8. POJ 1144 Network(割点)

    Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They are c ...

  9. POJ1144 Network 无向图割点

    题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...

随机推荐

  1. 不通过百川打开淘宝app

    private void openTaobao(String url){ if (isAppInstalled(this, "com.taobao.taobao")) { //这行 ...

  2. JDBC动态查询MySQL中的表(按条件筛选)

    动态查询实现按条件筛选.PreparedStatement 准备语句指定要查询的表头列,.setString()通过赋值指定行,.executeQuery()执行语句 在数据库test里先创建表sch ...

  3. (进制转换 栈)P1143 进制转换 洛谷

    题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10n> ...

  4. mybatis下载地址(所有版本)

    https://github.com/mybatis/mybatis-3/releases,这个github里面几乎包含了所有的没有batis

  5. 有时候eclipse 导入maven项目 启动的时候回出现这样一个问题

    严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catali ...

  6. u-boot(四)命令实现

    目录 u-boot(四)命令实现 分析run_command 小结 自定义一个命令 代码 makefile title: u-boot(四)命令实现 tags: linux date: 2018-09 ...

  7. Linux检查和收集硬件信息的常用命令总结

    Linux检查和收集硬件信息的常用命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux基础真的很重要,基础不牢,地动山摇.这句话我是听老男孩创始人冉总说的一句话,起初 ...

  8. appserver WildFly 8.1 / jboss debug / jboss rmi

    s 开启jboss debug模式,服务端口8787. [jbossuser@lindowsdevapp04 ~]$ vim /opt/wildfly/bin/standalone.conf JAVA ...

  9. 启动oracle的步骤

    启动oracle的步骤 Linux下启动oracle分为以下两步: 1.1.启动lsnrctl监听. 1.2.启动数据库实例. 启动oracle监听 首先登陆服务器,切换到oracle用户. [adm ...

  10. 解决gitk显示文件内容中文乱码

    解决gitk显示文件内容中文乱码 1.git config 命令 设置git gui的界面编码 git config --global gui.encoding utf-8 2.修改配置文件 在~\e ...