给你一个联通无向图,问你要修建几条边使得该图是一个边双连通图

无比经典,肯定是一个tarjan求桥,删掉后缩点,变成一颗树,看看有几个叶子结点,叶子结点一对对连起来即可

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
using namespace std;
struct Edge{ int u,v,nt; } G[1000010];
int c=1,h[500010],dfn[500010],clk=0,Col=0;
int n,m,low[500010],col[500010],d[500010];
bool b[1000010];
inline void adj(int x,int y){G[++c]=(Edge){x,y,h[x]}; h[x]=c;G[++c]=(Edge){y,x,h[y]}; h[y]=c;
}
void tarjan(int u,int v){clk++; low[v]=dfn[v]=clk;for(int w,i=h[v];i;i=G[i].nt)if((w=G[i].v)!=u){if(!dfn[w]){tarjan(v,w);if(low[w]==dfn[w] || low[w]>dfn[v]){ b[i]=1; b[i^1]=1; }else low[v]=min(low[v],low[w]);} else low[v]=min(low[v],dfn[w]);}
}
void dfs(int x,int u,int Cl){col[x]=Cl;for(int v,i=h[x];i;i=G[i].nt)if((v=G[i].v)!=u&&!b[i]&&!col[v]) dfs(v,x,Cl);
}
int main(){scanf("%d%d",&n,&m);for(int x,y,i=0;i<m;++i){scanf("%d%d",&x,&y);adj(x,y);}tarjan(0,1);for(int i=1;i<=n;++i) if(!col[i]) dfs(i,0,++Col);for(int i=2;i<=c;i+=2) if(b[i]){d[col[G[i].u]]++;d[col[G[i].v]]++;}int nodecnt=0;for(int i=1;i<=Col;++i) if(d[i]==1) nodecnt++;printf("%d\n",(nodecnt+1)>>1);
}

转载于:https://www.cnblogs.com/Extended-Ash/p/7774357.html

Jzoj4729 道路修建相关推荐

  1. 2435: [Noi2011]道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2188  Solved: 639 [Submit][Stat ...

  2. bzoj 2435: [Noi2011]道路修建 树上 dp

    2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  3. 【bzoj 2435】[Noi2011]道路修建(dfs)

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3505  Solved: 1167 [Submit][Sta ...

  4. 【BZOJ-2435】道路修建 (树形DP?)DFS

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3115  Solved: 1002 [Submit][Sta ...

  5. P4878 道路修建-美国

    http://www.tyvj.cn/p/4878道路修建 我想我经大神点拨后终于明白了...回学校再写吧 时间限制:1s 内存限制:256MB [问题描述] A国是一个商业高度发达的国家.它包含了n ...

  6. bzoj 2435: [Noi2011]道路修建(DFS)

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4110  Solved: 1429 [Submit][Sta ...

  7. JZOJ 3806. 【NOIP2014模拟8.24】小X 的道路修建

    Description 因为一场不小的地震,Y 省n 个城市之间的道路都损坏掉了,省长希望小X 将城市之间的道路重修一遍. 很多城市之间的地基都被地震破坏导致不能修路了,因此可供修建的道路只有m 条. ...

  8. 【JZOJ 3806】小X 的道路修建

    Description 因为一场不小的地震,Y 省n 个城市之间的道路都损坏掉了,省长希望小X 将城市之间的道路重修一遍. 很多城市之间的地基都被地震破坏导致不能修路了,因此可供修建的道路只有m 条. ...

  9. tyvj4878 道路修建 双连通分量+单调队列

    Description A国是一个商业高度发达的国家.它包含了n座城市,每座城商业都很发达.但不幸的是,A国的交通并没有像其商业那么发达,它仅仅保证了任意两座城市之间有路径存在,而且只存在唯一的一条! ...

最新文章

  1. 使用 LSTM 进行多变量时间序列预测的保姆级教程
  2. Python Module_Socket_网络编程
  3. 爬虫python代码-Python爬虫教程:200行代码实现一个滑动验证码
  4. Linux下搜索文件常用方法
  5. 无向图双连通分量BCC(全网最好理解)
  6. 微软企业库5.0学习笔记(三十三)数据访问模块
  7. 如何下载MySQL的JDBC驱动包
  8. c#一个项目同时兼容浩辰cad和AutoCad
  9. js获取当前日期前12月后12月日期
  10. 2019,收获,静静等待
  11. java中将毫秒值转换为小数点形式(几点几格式)的方法
  12. 从现在开始,和copy正则say拜拜!
  13. 人脑如果是台计算机,那么电从哪里来?
  14. 如何使用风向偏移简化风速风向传感器安装
  15. 第二章 Python语言基本语法元素
  16. yum 安装MySQL
  17. 软件测试常见的智力题
  18. 孔板流量计与均速管流量计的比较
  19. 用ACCESS2010打文出现件“system.ltb”版本2.0,丢失或损坏的应用的解决办法
  20. 【文件系统】Linux下文件大小和占磁盘空间大小

热门文章

  1. DB2 日期时间函数
  2. “云计算”三部曲之二:与“云”共舞——再谈云计算
  3. Latex 傻瓜式入门
  4. Tomcat日志中文乱码问题解决
  5. 5.Xilinx RapidIO核例子工程源码分析
  6. composer的基本运用
  7. 微信小程序wx.navigateTo路由循环嵌套问题解决
  8. Swift_类型选择
  9. 数组去重--这几种方法够不?
  10. Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom