分析:边双缩点后,消环变树,然后答案就是所有叶子结点(即度为1的点)相连,为(sum+1)/2;

注:此题有坑,踩踩更健康,普通边双缩短默认没有无向图没有重边,但是这道题是有的

我们看,low数组是我们缩点的关键,记录最早的前驱,但是不能由父边过来,这是因为没有重边

当有重边时,父边也可以更新low数组,所以我们只需要忽略父边第一次出现,这样第二次出现时,就可以用了

这样就完美解决了重边问题

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <stack>
using namespace std;
typedef long long LL;
const int N = 5e3+;
int head[N],tot,n,cnt,m;
struct Edge{
int u,v,next;
}edge[N<<];
void add(int u,int v){
edge[tot].u=u;
edge[tot].v=v;
edge[tot].next=head[u];
head[u]=tot++;
}
int dfn[N],low[N],clk,bel[N],d[N];
stack<int>s;
void targin(int u,int f){
dfn[u]=low[u]=++clk;
s.push(u);
bool flag=;//判断重边
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].v;
if(v==f&&!flag){
flag=;//记录重边出现次数,只跳过父边第一次出现
continue;
}
if(!dfn[v]){
targin(v,u);
low[u]=min(low[u],low[v]);
}
else if(dfn[v]<low[u])low[u]=dfn[v];
}
if(dfn[u]==low[u]){
++cnt;
int k;
do{
k=s.top();
s.pop();
bel[k]=cnt;
}while(k!=u);
}
}
int main(){ memset(head,-,sizeof(head));
scanf("%d%d",&n,&m);
while(m--){
int u,v;
scanf("%d%d",&u,&v);
add(u,v),add(v,u);
}
targin(,-);
for(int i=;i<tot;i+=){
int k1=bel[edge[i].u],k2=bel[edge[i].v];
if(k1==k2)continue;
++d[k1],++d[k2];
}
int sum=;
for(int i=;i<=n;++i)if(d[i]==)++sum;
printf("%d\n",++sum/);
return ;
}

最新文章

  1. BeanFactory not initialized or already closed - call &#39;refresh&#39; before accessing beans解决办法
  2. glOrtho、glFrustum &amp;&amp; glPerspective
  3. move语义和右值引用
  4. 异步JS:$.Deferred的使用
  5. Svn 的 Update 与Maven 的update project 作用有什么区别
  6. Oracle 主键
  7. Thinkphp框架----微信公众测试号开发
  8. java url中文 编译和解码
  9. iOS之内存管理浅谈
  10. java20 创建服务器:ServerSocket
  11. java开发webservice的几种方式
  12. TensorBoard使用
  13. dwr3+spring实现消息实时推送
  14. CentOS系统版本的查看方法
  15. Python 入门:基本语法
  16. vscode 集成 cygwin 的注意事项
  17. BFS+二进制状态压缩 hdu-1429
  18. C#编程(十二)----------函数
  19. 【变态问题】在发现“XXXX”类型前实体框架已使用默认 DbConfiguration 实例。
  20. iOS:UIView视图与组件控件

热门文章

  1. angular service/directive
  2. R语言编程艺术# 数据类型向量(vector)
  3. CQRS学习——最小单元的Cqrs(CommandEvent)[其一]
  4. 优化SQL Server数据库查询方法
  5. smarty 时间格式化date_format
  6. fiddler 插件开发
  7. Python的作用域
  8. CF 136B Ternary Logic
  9. poj The Clocks 高斯消元
  10. minicom 配置