题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量。

思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可。算法相对简单,但是注意几个细节:

1:原图可能不连通。

2:有的连通分量只有一个点,当舍去该点时候,连通分量-1;

复习求割点的好题!

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int n,m;
vector<vector<int> >e(10010);
int dfn[5010];int low[5010];int vis[5010];
int times=0;
int subset[5010];
int root=0;
int rf=0;
int son=0;
void tarjan(int u,int fa)     //无向图tarjan记录父亲
{if(u==rf)return;          //是被枚举的点,舍去(从图中删去)。dfn[u]=low[u]=times++;for(int i=0;i<e[u].size();i++){int v=e[u][i];if(v==rf)continue;     // 这里注意,舍去的点不要了if(!vis[v]){vis[v]=1;tarjan(v,u);if(low[v]<low[u])low[u]=low[v];if(u==root)                   //求割点是根的情况{son++;}else                  // 其他情况{if(dfn[u]<=low[v])    //subset【u】+1记录 以u为割点后形成的连通分量数subset[u]++;}}else if(v!=fa)         //条件注意{if(dfn[v]<low[u])low[u]=dfn[v];}}return ;
}
int main()
{while(~scanf("%d%d",&n,&m)){for(int i=0;i<=n;i++){dfn[i]=low[i]=subset[i]=vis[i]=0;e[i].clear();}int ta,tb;for(int i=0;i<m;i++){scanf("%d%d",&ta,&tb);e[ta].push_back(tb);e[tb].push_back(ta);}int maxx=0;for(int i=0;i<n;i++)   //枚举每个点{rf=i;               //i舍去vis[rf]=1;int scc=0;int maxson=0;for(int iii=0;iii<n;iii++)          //考虑原图不连通!{if(!vis[iii]){vis[iii]=1;root=iii;tarjan(iii,-1);scc++;                     //连通分量数if(son>maxson)maxson=son;    //求出每个连通分量的根的最大的sonson=0;                         //每个连通分量要更新son}}if(e[i].size()==0)scc--;    // 注意点!!!:该连通分量只有一个点!舍去的话就没了。for(int ii=0;ii<n;ii++)             //取最大的{if(scc+subset[ii]+1-1>maxx)maxx=scc+subset[ii]+1-1;}if(scc+maxson-1>maxx)maxx=maxson+scc-1;   for(int j=0;j<n;j++)    //不忘更新!{dfn[j]=low[j]=subset[j]=vis[j]=0;}son=times=0;}cout<<maxx<<endl;}return 0;
}

转载于:https://www.cnblogs.com/yezekun/p/3925714.html

hdu 4587 2013南京邀请赛B题/ / 求割点后连通分量数变形。相关推荐

  1. 对tf.reduce_mean API的理解就是求平均值,reduce指的是一串数据求平均值后维数降低了,可不是吗,一串向量变成了一个数,维数自然降低了

    tf.math.reduce_mean(input_tensor, axis=None, keepdims=False, name=None ) 对tf.reduce_mean的理解就是求平均值,re ...

  2. 求数组排序后相邻数的最大差值

    /** * 求数组排序后相邻数的最大差值 * @author Administrator * {9,3,1,10} 返回6 */ public class test12 { public static ...

  3. 牛客-计算机复试题-求图的连通分支数

    求图的连通分支数可以用并查集实现. 并查集的讲解推荐: https://blog.csdn.net/liujian20150808/article/details/50848646 本题求的是无向图的 ...

  4. 2013 南京邀请赛 A play the dice 求概率

    1 /** 2 大意:给定一个色子,有n个面,每一个面上有一个数字,在其中的m个面上有特殊的颜色,当掷出的色子出现这m个颜色之一时,可以再掷一次..求其最后的期望 3 思路:假设 期望为ans 4 a ...

  5. hdu 4588 Count The Carries 南京邀请赛

    题目意思:求a~b 之间数二进制的和 求  进了多少位. 比如  1-3     01+10+11=22   22->30->110 进了 2位 要寻找规律,发现  加到3的时候为22   ...

  6. 南京晓庄学院大一第二学期计算机数据结构期末考试试卷及答案,南京晓庄学院数据结构题库参考标准答案...

    南京晓庄学院数据结构题库参考标准答案 数据结构与算法 习题册 (课后部分参考答案) <数据结构与算法>课程组 目录 课后习题部分 第一章 绪论1 第二章 线性表3 第三章 栈和队列5 第四 ...

  7. zz 标 题: 求weka JVM outofMemory问题的解决方案【已解决】

    发信人: finallyliuyu (领头驴), 信区: NLP 标  题: 求weka JVM outofMemory问题的解决方案 发信站: 水木社区 (Sun Feb 20 10:36:12 2 ...

  8. 第十一届蓝桥杯省赛C++组试题 第3题 求阴影面积

    /* 第十一届蓝桥杯省赛C++组试题 第3题 求阴影面积 */ #include <bits/stdc++.h> using namespace std; int main() {int ...

  9. 第十一届蓝桥杯省赛 C++组试题 第2题 求完数

    /* 第十一届蓝桥杯省赛C++组试题精讲第2题 求完数因子:因子也叫因数,例如3×5=15,那么3和5是15的因子. 同时15×1=15,那么1和15也是15的因子. 1,3,5,15 这四个因子是1 ...

最新文章

  1. 面向对象程序设计作业 6.1~6.4
  2. PHP把下划线分隔命名的字符串 转换成驼峰式命名方式
  3. 华为的发展与管理浅析
  4. vim + cscope + kscope
  5. iOS开发常用的第三方
  6. guava的正确引入方式_使用Guava的AbstractInvocationHandler正确完成代理
  7. Springboot2.x +JPA 集成 Apache ShardingSphere 分库分表
  8. linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
  9. plsql 存储过程 批量提交_新一代的键值存储 KVell SOSP 2019
  10. jquery.validate动态更改校验规则
  11. 记录一次ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exis故障【已解决】
  12. Ubuntu c++调用python脚本(Anaconda)
  13. 蚂蚁金服 Java RPC 开源框架—SOFARPC
  14. Lambda表达式----“进化论”
  15. 辩证唯物主义和历史唯物主义思维导图 - 圣才
  16. 电脑主板资料库 07【转至www.ongood.com.tw】【FreeXploiT收集整理】
  17. 黄页宝贝工具栏软件发布了
  18. 菲尔人格测试(测试一下自己的分数看看)
  19. 一系列国内外顶尖互联网公司的技术博客,晋升程序员必备!
  20. C语言实现估计信号的幅度

热门文章

  1. python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
  2. 电脑机时,电脑死机时,为啥会忍不住扇它一巴掌?
  3. python十大标准_python对标准类型的分类
  4. ionic项目创建打包签名
  5. 小程序云开发 一开通云开发,给数据库添加一条记录
  6. antd 表单提交,文件和表单内容一起提交,表单校验
  7. [微信小程序]单选框以及多选框实例代码附讲解
  8. App Tracking Transparency被拒解决
  9. Linux rsync目录同步功能实现
  10. 是否可以人为修改发表时间