[IOI2007] training 训练路径

大意

给定一个无向图, 有树边和非树边, 删去若干条非树边, 使得图中不存在偶环 (点不得出现两次), 求删去最小边权.

题解

限制

考虑每条非树边 ee, 设 d(e)d(e)ee 的两端在树上的距离.

  1. d(e)d(e) 为奇数时, 加上 ee 就会形成偶环, 显然不行.

  2. 此外, 两条非树边不能重叠, 如下图所示:

    1

    图中绿色的边为非树边. 此时, 红色路径就构成了一个环. 证明: 由 1 , x+yx + y, y+zy + z 均为偶数, 红色长 x+z+2=(x+y)+(y+z)2y+2x + z + 2 = (x + y) + (y + z) - 2y + 2 显然也是偶数.

    下图同理

    2

综上, 合法的图应该是这样的

3

树形dp + 状压dp

可以用 树形dp 和 状态压缩 解决.

可以把问题转化为合法地加上的最大边权.

fu,Sf_{u, S} 为在 uu 的子树中, 不考虑子集合 SS 的最大边权.

显然有 fu,Sfu,S,SSf_{u, S} \ge f_{u, S'}, S' \subseteq S

转移情况:

  1. 从儿子直接转移 fu,S=vson(u),v∉Sfv,f_{u, S} = \sum_{v \in son(u), v \not\in S} f_{v, \emptyset}

  2. 存在 uxyu \in x \to yx,ysons(u)x, y \in sons(u), 显然 u=lca(x,y)u = \operatorname{lca}(x, y)

    xyx \to y{x,p1,p2,,pn,u,qm,qm1,,q1,y}\{x, p_1, p_2, \cdots , p_n, u, q_m, q_{m - 1}, \cdots, q_1, y\}.

    aa 为贡献, 那么: (认为 x=p0,y=q0x = p_0, y = q_0)

    a=fx,+i=1nfpi,{pi1}+fy,+i=1mfqi,{qi1}a = f_{x, \emptyset} + \sum_{i = 1}^{n} f_{p_i, {\{p_{i - 1}\}}} + f_{y, \emptyset} + \sum_{i = 1}^{m} f_{q_i, \{q_{i - 1}\}}

    转移为

    fu,S{x,y}=fu,S+a(x,y∉S)f_{u, S \cup \{x, y\}} = f_{u, S} + a (x, y \not\in S)