Jzoj4729 道路修建
给你一个联通无向图,问你要修建几条边使得该图是一个边双连通图
无比经典,肯定是一个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 道路修建相关推荐
- 2435: [Noi2011]道路修建
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2188 Solved: 639 [Submit][Stat ...
- bzoj 2435: [Noi2011]道路修建 树上 dp
2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- 【bzoj 2435】[Noi2011]道路修建(dfs)
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3505 Solved: 1167 [Submit][Sta ...
- 【BZOJ-2435】道路修建 (树形DP?)DFS
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3115 Solved: 1002 [Submit][Sta ...
- P4878 道路修建-美国
http://www.tyvj.cn/p/4878道路修建 我想我经大神点拨后终于明白了...回学校再写吧 时间限制:1s 内存限制:256MB [问题描述] A国是一个商业高度发达的国家.它包含了n ...
- bzoj 2435: [Noi2011]道路修建(DFS)
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 4110 Solved: 1429 [Submit][Sta ...
- JZOJ 3806. 【NOIP2014模拟8.24】小X 的道路修建
Description 因为一场不小的地震,Y 省n 个城市之间的道路都损坏掉了,省长希望小X 将城市之间的道路重修一遍. 很多城市之间的地基都被地震破坏导致不能修路了,因此可供修建的道路只有m 条. ...
- 【JZOJ 3806】小X 的道路修建
Description 因为一场不小的地震,Y 省n 个城市之间的道路都损坏掉了,省长希望小X 将城市之间的道路重修一遍. 很多城市之间的地基都被地震破坏导致不能修路了,因此可供修建的道路只有m 条. ...
- tyvj4878 道路修建 双连通分量+单调队列
Description A国是一个商业高度发达的国家.它包含了n座城市,每座城商业都很发达.但不幸的是,A国的交通并没有像其商业那么发达,它仅仅保证了任意两座城市之间有路径存在,而且只存在唯一的一条! ...
最新文章
- 使用 LSTM 进行多变量时间序列预测的保姆级教程
- Python Module_Socket_网络编程
- 爬虫python代码-Python爬虫教程:200行代码实现一个滑动验证码
- Linux下搜索文件常用方法
- 无向图双连通分量BCC(全网最好理解)
- 微软企业库5.0学习笔记(三十三)数据访问模块
- 如何下载MySQL的JDBC驱动包
- c#一个项目同时兼容浩辰cad和AutoCad
- js获取当前日期前12月后12月日期
- 2019,收获,静静等待
- java中将毫秒值转换为小数点形式(几点几格式)的方法
- 从现在开始,和copy正则say拜拜!
- 人脑如果是台计算机,那么电从哪里来?
- 如何使用风向偏移简化风速风向传感器安装
- 第二章 Python语言基本语法元素
- yum 安装MySQL
- 软件测试常见的智力题
- 孔板流量计与均速管流量计的比较
- 用ACCESS2010打文出现件“system.ltb”版本2.0,丢失或损坏的应用的解决办法
- 【文件系统】Linux下文件大小和占磁盘空间大小