Poj 3352 Road Construction(边双模板)
发布日期:2021-06-30 10:23:57
浏览次数:2
分类:技术文章
本文共 1451 字,大约阅读时间需要 4 分钟。
边双连通缩点裸题
因为这是一个连通图,边双连通可以先缩点
这样是一颗树,任意两点间只有一条路
那么统计入度为零的点,用边两两连接起来
每个点的度都大于 2 2 2,这样一定是一个边双
#include#include #include #include using namespace std;const int maxn = 2e5+10; struct edge{ int u,to,nxt;}d[maxn]; int head[maxn],cnt=1;void add(int u,int v) { d[++cnt] = (edge){ u,v,head[u]},head[u] = cnt; }int low[maxn],dfn[maxn],id,bridge[maxn];int bccn,bcc[maxn],n,m,in[maxn];void tarjan(int u,int fa){ dfn[u] = low[u] = ++id; for(int i=head[u];i;i=d[i].nxt ) { int v = d[i].to; if( v==fa ) continue; if( !dfn[v] ) { tarjan( v,u ); low[u] = min( low[u],low[v] ); if( low[v]>dfn[u] ) bridge[i] = bridge[i^1] = 1; } low[u] = min( low[u],dfn[v] ); }}void sd(int u){ dfn[u] = 1, bcc[u] = bccn; for(int i=head[u];i;i=d[i].nxt ) { int v = d[i].to; if( bridge[i]||dfn[v] ) continue; sd(v); }}int main(){ while( scanf("%d%d",&n,&m)!=EOF ) { for(int i=1;i<=m;i++) { int l,r; scanf("%d%d",&l,&r); add(l,r); add(r,l); } tarjan(1,1); memset( dfn,0,sizeof(dfn) ); for(int i=1;i<=n;i++) if( !dfn[i] ) bccn++,sd(i); for( int i=2;i<=cnt;i+=2 ) { int u = d[i].u, v = d[i].to; if( bcc[u]==bcc[v] ) continue; in[bcc[u]]++, in[bcc[v]]++; } int ans = 0; for(int i=1;i<=bccn;i++) if( in[i]==1 ) ans++; printf("%d\n",(ans+1)/2 ); cout << ans << "!\n"; cnt = 1,bccn = id = 0; for(int i=1;i<=n;i++) head[i] = dfn[i] = low[i] = bcc[i] = 0; }}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/109602127 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月04日 18时54分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CppWeekly 08 constexpr
2019-04-30
使gazebo_ros能够找到其他package的资源文件
2019-04-30
右键打开 visual studio developer command prompt
2019-04-30
利用AirSim在Unreal Engine上获取全景图像
2019-04-30
神奇的c++等号重载
2019-04-30
利用uWSGI和Nginx部署Django
2019-04-30
Linux下修改^M换行符
2019-04-30
笔记-有关于Vim
2019-04-30
vnc, vncserver, ssh的locale问题
2019-04-30
[野路数] Django中使用logging
2019-04-30
[未修订]ROS学习笔记
2019-04-30
Eigen学习笔记
2019-04-30
PyTorch的学习笔记01-基础中的基础
2019-04-30
onshape 做参考面等虚拟几何的装配和原点定位
2019-04-30
JAVA学习笔记1 - 类和变量类型
2019-04-30
JAVA学习笔记2 - 变量类型与修饰符
2019-04-30
JAVA学习笔记3 - 运算符
2019-04-30
JAVA学习笔记4 - 循环与分支结构
2019-04-30