HDU 4694 [支配树]
来源:互联网 发布:矩阵音响 编辑:程序博客网 时间:2024/05/17 00:02
题目传送门
典型的支配树裸题,就是询问给定点到某点i的全部路径都经过的某点j。
具体讲解就不写了,网上很详细。
安利1
安利2
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<vector>#include<algorithm>using namespace std;const int N=500001;vector<int> E[N],G[N],V[N];int son[N],dfn[N],idom[N],sdom[N],id[N],fa[N],f[N],ans[N],cnt;int find(int x){ if(f[x]==x)return x; int y=find(f[x]); if(sdom[son[x]]>sdom[son[f[x]]])son[x]=son[f[x]]; return f[x]=y;}void dfs(int u){ id[dfn[u]=++cnt]=u; for(register int v,i=0;i<E[u].size();i++) if(v=E[u][i],!dfn[v])dfs(v),fa[dfn[v]]=dfn[u];}int n,m;inline void tarjan(int s){ for(register int i=1;i<=n;i++)f[i]=sdom[i]=son[i]=fa[i]=i,dfn[i]=0; cnt=0,dfs(s); register int k,x; for(register int i=cnt;i>1;i--){ for(register int v,j=0;j<G[id[i]].size();++j) if(v=G[id[i]][j],dfn[v]) find(k=dfn[v]),sdom[i]=sdom[i]<sdom[son[k]]?sdom[i]:sdom[son[k]]; V[sdom[i]].push_back(i),f[i]=x=fa[i]; for(register int v,j=0;j<V[f[i]].size();j++) v=V[f[i]][j],find(k=v),idom[k]=sdom[son[k]]<x?son[k]:x; V[x].clear(); } for(register int i=2;i<=cnt;V[id[idom[i]]].push_back(id[i]),i++) if(idom[i]!=sdom[i])idom[i]=idom[idom[i]];}void mp(int u,int p){ ans[u]=p; for(register int v,i=0;i<V[u].size();++i) v=V[u][i],mp(v,p+v);}int main(){ while(scanf("%d%d",&n,&m)!=EOF){ for(register int i=0;i<=500000;i++)G[i].clear(),V[i].clear(),E[i].clear(); for(register int u,v,i=1;i<=m;i++)scanf("%d%d",&u,&v),E[u].push_back(v),G[v].push_back(u); tarjan(n),mp(n,n); for(register int i=1;i<=n;i++) printf("%d",ans[i]),putchar(i==n?'\n':' '),ans[i]=0; } return 0;}
阅读全文
0 0
- HDU 4694 [支配树]
- HDU 4694 Important Sisters【支配树】
- HDU 4694: Important Sisters(支配树)
- 【23.91%】【hdu 4694】Important Sisters("支NMLGB配树"后记)(支配树代码详解)
- 学习一个支配树
- 学习一个支配树
- 支配树学习笔记
- 支配树[模板]
- HDU--3957[Street Fighter] 最小支配集
- HDU 3595 博弈论,被支配的恐惧
- 树的最小支配集
- 支配树 与 tarjan算法
- hdu4694 Important Sisters 支配树
- 树的最小支配集
- bzoj2815 [ZJOI2012]灾难 支配树
- 【多题合集】AC自动机练习,被HDU支配的恐惧
- hihocoder #1343 : Stable Members(支配树)
- 支配树(dominator tree)学习笔记
- ScheduledExecutorService定时周期执行指定的任务
- 例题6-3 矩阵链乘(Matrix Chain Multiplication, UVa 442)
- 使用POST、GET、AsyncHttpClient创造服务端用手机端来连接进行登录
- java虚拟机内存模式,栈和堆
- linux 设备驱动之字符设备
- HDU 4694 [支配树]
- eclipse中的tomcat启动报错“The JRE could not be found. Edit the server and change the JRE location.”
- 2017 多校系列 2
- 欧拉函数应用
- 40个Java多线程问题总结
- 1095. Cars on Campus (30) <结构体排序>
- C
- note_cloud--加载笔记列表
- Android图片优化,减少内存压力,提高app流畅度