[APIO2018]铁人两项(圆方树DP)
2018-05-30 23:38
288 查看
题意:给出一张图,求满足存在一条从u到v的长度大于3的简单路径的有序点对(u,v)个数。
做了上一题[HDU5739]Fantasia(点双连通分量+DP),这个题就是一个NOIP题了。
一开始考虑了各种各样的情况,最后发现几乎没有什么特殊情况,程序很优美。
首先和上一题一样建出圆方树,然后如果选择了点对(a,c),那么b一定在树上a到c的路径上。
给树上每个BCC点权为这个BCC的大小,普通点点权设为-1,那么答案就是所有起点终点均为普通点的路径的权值和。直接树形DP即可。
#include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=l; i<=r; i++) typedef long long ll; using namespace std; const int N=200010; ll ans; int n,m,u,v,bcc,tim,top,S,sz ,dfn ,low ,stk ,val ; struct E{ int cnt,h ,nxt[N<<1],to[N<<1]; void add(int u,int v){ to[++cnt]=v; nxt[cnt]=h[u]; h[u]=cnt; } void dfs(int x){ ans+=2ll*val[x]*(S-sz[x])*(sz[x]-(x<=n)); if (x<=n) ans+=2ll*val[x]*(S-1); for (int i=h[x],k; i; i=nxt[i]) dfs(k=to[i]),ans+=1ll*val[x]*(sz[x]-sz[k]-(x<=n))*sz[k]; } }G,G1; void tarjan(int x,int fa){ dfn[x]=low[x]=++tim; stk[++top]=x; sz[x]=1; val[x]=-1; for (int i=G.h[x],k; i; i=G.nxt[i]) if ((k=G.to[i])!=fa){ if (dfn[k]) low[x]=min(low[x],dfn[k]); else{ tarjan(k,x); low[x]=min(low[x],low[k]); if (low[k]>=dfn[x]){ bcc++; int t; G1.add(x,bcc); do{ t=stk[top--]; val[bcc]++; G1.add(bcc,t); sz[bcc]+=sz[t]; }while (t!=k); val[bcc]++; sz[x]+=sz[bcc]; } } } } int main(){ freopen("c.in","r",stdin); freopen("c.out","w",stdout); scanf("%d%d",&n,&m); bcc=n; rep(i,1,m) scanf("%d%d",&u,&v),G.add(u,v),G.add(v,u); rep(i,1,n) if (!dfn[i]) tarjan(i,0),S=sz[i],G1.dfs(i); printf("%lld\n",ans); return 0; }
相关文章推荐
- 【APIO 2018】铁人两项(圆方树)
- LOJ.2587.[APIO2018]铁人两项Duathlon(圆方树)
- 洛谷P4630 [APIO2018] Duathlon 铁人两项 【圆方树】
- LOJ2587:[APIO2018]铁人两项——题解
- 【DP】APIO 2014 序列分割
- _bzoj1911 [Apio2010]特别行动队【斜率优化dp】
- [bzoj 1911][Apio 2010]特别行动队(斜率优化DP)
- 3675: [Apio2014]序列分割 斜率优化DP
- [BZOJ 3675][APIO 2014]序列分割(斜率优化DP)
- [BZOJ1177]APIO2009 Oil|前缀和|DP|分类
- [BZOJ 3675][Apio2014]序列分割:DP斜率优化
- poj 2018 Best Cow Fences USACO历年月赛 (分数规划+DP)
- 2017-2018 ACM-ICPC Southeast Regional Contest (Div. 1) J.Treasure Map dp
- POJ - 2018 Best Cow Fences(DP)
- [apio2010]特别行动队(斜率优化的dp)
- CTSC && APIO 2018划水记
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
- [贪心 DP] BZOJ 4069 [Apio2015]巴厘岛的雕塑
- bzoj1911: [Apio2010]特别行动队 斜率优化DP
- BZOJ 1179: [Apio2009]Atm Tarjan强连通分量缩点,SPFA,DP