博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3694 Network【连通分量+LCA】
阅读量:6167 次
发布时间:2019-06-21

本文共 2002 字,大约阅读时间需要 6 分钟。

题意:

一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥(注意是要考虑之前连了的边,每次回答是在上一次的基础之上)。

思路:

首先运行一次Tarjan,求出桥和缩点,那么远无向图将缩点为一棵树,树边正好是原来的桥。每次连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然后找这两个缩点的LCA,因为从点u到LCA再到点v再到点u,将形成环,里面的树边都会变成不是桥。计数的时候注意,有些树边可能之前已经被标记了,这次再经过不能再标记。

代码:

#include 
#include
#include
#include
using namespace std;#define N 100010#define M 200010vector
ver[N];int head[N],dfn[N],low[N],vis[N],fa[N],dcnt,bcnt;struct edge{ int u,v,used,next;}e[2*M];bool isbridge[N];inline void add(int u, int v ,int &k){ e[k].v = v; e[k].used = 0; e[k].next = head[u]; head[u] = k++;}void LCA(int u,int v){ if(dfn[u] < dfn[v]) swap(u,v); while(dfn[u] > dfn[v]) { if(isbridge[u]) bcnt--; isbridge[u] = false; u = fa[u]; } while(u!=v) { if(isbridge[u]) bcnt--; if(isbridge[v]) bcnt--; isbridge[u] = isbridge[v] = false; u = fa[u]; v = fa[v]; }}void dfs(int u){ vis[u] = 1; dfn[u] = low[u] = ++dcnt; for(int k=head[u]; k!=-1; k=e[k].next) if(!e[k].used) { e[k].used = e[k^1].used = 1; int v = e[k].v; if(!vis[v]) { fa[v] = u; dfs(v); low[u] = min(low[u] , low[v]); if(dfn[u] < low[v]) { bcnt++; isbridge[v] = true; } } else if(vis[v] == 1) low[u] = min(low[u],dfn[v]); } vis[u] = 2;}int main(){ int n,m,q,cas=0; while(cin>>n>>m,n,m) { memset(head,-1,sizeof(head)); int k = 0; for(int i=0; i
>u>>v; add(u,v,k); add(v,u,k); } memset(isbridge,false,sizeof(isbridge)); memset(vis,0,sizeof(vis)); dcnt = bcnt = 0; fa[1] = 1; dfs(1); printf("Case %d:\n",++cas); cin>>q; while(q--) { int u,v; cin>>u>>v; LCA(u,v); cout<
<

 

转载于:https://www.cnblogs.com/darklights/p/7642660.html

你可能感兴趣的文章
百度成立“百度搜索公司”:固本拓新驱动生态裂变
查看>>
宇宙风暴?才怪!瑞典暗指俄罗斯黑客攻击航空控制系统
查看>>
5G将为欧洲带来超千亿欧元社会经济效益
查看>>
系统进程管理工具Process Explorer
查看>>
富士通仍执着SPARC架构芯片 将坚持推新
查看>>
易宪容:企业要利用大数据挖掘潜在需求
查看>>
微软声称Win10周年更新为Edge浏览器带来更好电池寿命
查看>>
混合云是企业IT的未来吗?
查看>>
LINE在日本取得成功 但全球化之路还很长
查看>>
红帽云套件新增QuickStart Cloud Installer,加快私有云部署
查看>>
MapXtreme 2005 学习心得 一些问题(八)
查看>>
流量精细化运营时代,营销SaaS之使命——流量掘金
查看>>
哥伦比亚大学牙科学院使用RFID系统,更好管理牙科器械
查看>>
雅虎同意出售核心资产
查看>>
Win10大丰收的节奏 微软收编iOS全部150万应用
查看>>
智慧城市要除“城市病” 中兴通讯开辟新增长极
查看>>
华平蝉联“视频会议十大卓越品牌”
查看>>
Opera已确认解散iOS开发团队
查看>>
DevOps:新的业务浪潮
查看>>
CERT:启用EMET的Windows 7比Windows 10更加安全
查看>>