题目请戳这里

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

题目分析: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

最新文章

  1. app使用微信支付成功后,点击返回到该app却跳到另外一个app去了
  2. XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX
  3. Mvc模板页
  4. bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
  5. JAVA计算器算法实现
  6. hdu4267 A Simple Problem with Integers
  7. 【输入输出挂】【Uva11462】Age Sort
  8. JavaWeb开发之HttpServletResponse
  9. 【Centos7 GRUB】修改开机等待时间
  10. Intervals
  11. CSS 文本溢出时显示省略标记
  12. apache tomcat的下载 安装 配置
  13. DPDK kni创建要先于port开启
  14. 环境部署(一):Linux下安装JDK
  15. 【Java编程思想笔记】-集合1
  16. 问题描述: fatal error: &#39;XCTest/XCTest.h&#39; file not found
  17. Django_在单独文件中加载Django环境临时调试
  18. [loss]Triphard loss优雅的写法
  19. js面向对象设计之class继承
  20. #leetcode刷题之路39-组合总和

热门文章

  1. ISSkin 使用技巧,WinXP 下的窗口阴影
  2. bzoj2015 [Usaco2010 Feb]Chocolate Giving
  3. HDU1181 变形课 (回溯法)
  4. java中如何将char数组转化为String
  5. hdu1588之经典矩阵乘法
  6. CMS(Concurrent Mark-Sweep)
  7. maven简单工具命令
  8. BZOJ 4008: [HNOI2015]亚瑟王( dp )
  9. struts2源码调试环境的搭建
  10. mysql5.6 zip版安装