题目请戳这里

题目大意:给一张无向图,求割点数量。

题目分析:tarjan算法求割点。关于无向图割点,这里说的很清楚了。直接建图跑一遍tarjan算法即可。

详情请见代码:

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 101;
int adj[N][N];
bool flag[N][N],vis[N];
int low[N],dfn[N],subnets[N];
int n,dfns;
char s[N]; void dfs(int cur)
{
int i;
vis[cur] = true;
dfn[cur] = low[cur] = dfns ++;
for(i = 1;i <= adj[cur][0];i ++)
{
if(vis[adj[cur][i]] == false)
{
dfs(adj[cur][i]);
low[cur] = min(low[cur],low[adj[cur][i]]);
if(low[adj[cur][i]] >= dfn[cur])
subnets[cur] ++;
}
else
low[cur] = min(low[cur],dfn[adj[cur][i]]);
}
} void tarjan()
{
int i;
memset(vis,false,sizeof(vis));
memset(subnets,0,sizeof(subnets));
dfns = 1;
for(i = 1;i <= n;i ++)
if(vis[i] == false)
{
subnets[i] --;
dfs(i);
}
int ans = 0;
for(i = 1;i <= n;i ++)
if(subnets[i] > 0)
ans ++;
printf("%d\n",ans);
} int main()
{
int i,j,p;
freopen("in.txt","r",stdin);
while(scanf("%d",&n),n)
{
memset(flag,false,sizeof(flag));
memset(adj,0,sizeof(adj));
while(scanf("%d",&i),i)
{
gets(s);
p = 0;
while(s[p] && s[p] == ' ')
p ++;
while(sscanf(s + p,"%d",&j) == 1)
{
if(flag[i][j] == false)
{
flag[i][j] = flag[j][i] = true;
adj[i][++ adj[i][0]] = j;
adj[j][++ adj[j][0]] = i;
}
while(s[p] && s[p] != ' ')
p ++;
while(s[p] && s[p] == ' ')
p ++;
}
}
tarjan();
}
return 0;
}
//188K 16MS

poj1144Network(无向图割点数)的更多相关文章

  1. POJ1144 Network 无向图割点

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

  2. tarkjan求无向图割点模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; ; struct node { ...

  3. HDU4587--TWO NODES(无向图割点,暴力出奇迹)这是我见过的时间最长的题。。。

    TWO NODES Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  4. UVA315- Network(无向图割点)

    题目链接 题意: 给出一张无向图,求割点的个数 思路:非常裸的题目.直接套用模版就可以. 代码: #include <iostream> #include <cstdio> # ...

  5. Tarjan求无向图割点、桥详解

    tarjan算法--求无向图的割点和桥   一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不 ...

  6. POJ 1523 SPF (无向图割点)

    <题目链接> 题目大意: 给你一个连通的无向图,问你其中割点的编号,并且输出删除该割点后,原图会被分成几个连通分量. 解题分析: Tarjan求割点模板题. #include <cs ...

  7. POJ1523 SPF[无向图割点]

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8139   Accepted: 3723 Description C ...

  8. POJ1144Network(求割点个数)

    题目链接 题意:一共n割点,然后若干行,每行第一个输入一个点,然后若干个点表示与他相连,0单独一行表示一个样例的结束.然后求图中的割点个数 割点:去掉该点之后得到的图不在连通,那么该店就是割点 一般割 ...

  9. SPF Tarjan算法求无向图割点(关节点)入门题

    SPF 题目抽象,给出一个连通图的一些边,求关节点.以及每个关节点分出的连通分量的个数 邻接矩阵只要16ms,而邻接表却要32ms,  花费了大量的时间在加边上. //   time  16ms 1 ...

随机推荐

  1. acdream 1154 Lowbit Sum

    先贴代码,以后再写题解... 首先,直接枚举肯定是会超时的,毕竟n就有10^9那么多... 对于每个数,我们先把它转化为二进制:例:21-->10101: 对于00001~10101,可以分为几 ...

  2. lastcomm搜索并显示以前执行过的命令信息

    lastcomm搜索并显示以前执行过的命令信息

  3. git 之别名配置

    在git操作中有很多命令我们自己可以起别名,以提高操作效率. 1. 配置方式 1)项目级别的配置,仅对当前项目生效(将写入到.git/config文件中)    $ git config --glob ...

  4. Sereja and Suffixes(思维)

    Sereja and Suffixes Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  5. check cable connection PXE-M0F: Exiting intel PXE ROM no bootable device-- insert boot disk and pre

    今天修电脑遇到一个问题,新买的电脑的原装的是linux,然后我按常规方式进入PE后重装系统,然后开机一直显示下面的代码,进不去: check cable connection PXE-M0F: Exi ...

  6. ORACLE表空间管理方式segment和extent

    A permanent tablespace contains persistent schema objects. Objects in permanent tablespaces are stor ...

  7. 使用FileSystemWatcher捕获系统文件状态

    源代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  8. Daily Sentence

    2016-12-05 08:59:15 Knowing yourself is the beginning of all wisdom. 智者始于自知. 2016-05-01 19:38:25 The ...

  9. (转)C#反射机制详解

    反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Reflection命名空间包 ...

  10. FIFO算法

    package studyJava;class FIFO{ /* * 先进先出算法 * N:内存块的个数 * array:内存块 * size:页面数目 * */ private static fin ...