loading

ABC412G Degree Harmony | Tutte 矩阵

题意

给定一张 \(n\)\(m\) 边的图,每个点有一个 \(a_i\),你需要选出若干条边,使得在只包含这些边的图中每个点的度数奇偶性与其 \(a_i\) 相同且度数 \(\le a_i\)。判断有无解并在此基础上求出边的最小条数。

\(n,\sum a_i\le 150\)

分析

全新科技:Tutte 矩阵。

先不急着看这个科技干嘛用的。先看原题,将 \(a_i\) 同奇偶性看成每次可以无代价的将一个点的度数 +2,一条边可以看做以 1 为代价将两个点的度数 +1,初始全 0 最终要求度数序列 \(=a\)。观察到 \(\sum a_i\) 较小,考虑对每个 \(a_i\) 建点,同属一个点的 \(a_i\) 两两连一条代价为 0 的边,有边相连的两个点的所有 \(a_i\) 之间连代价为 1 的边,则我们希望此图存在完美匹配,并在其基础上最小化代价和。

可以发现这是一般图最小权匹配,理论上可以使用带花树做,但太不优美了。这个科技就是用来求解一般图完美匹配的。

定义一张图的 Tutte 矩阵 \(T\) 为:

  • \((i,j)\) 存在边,则 \(T_{i,j}=(-1)^{[i>j]}\cdot x_{i,j}\)(先不用管 \(x_{i,j}\) 是啥)。
  • 否则 \(T_{i,j}=0\)

结论:一张图存在完美匹配当且仅当 \(\det T\neq 0\)

证明:考虑行列式的定义,将排列图建出来,会形成若干个环。(在 \(\prod T_{i,p_i}\neq 0\) 的前提下)若全是偶环,那么环上相邻两个点匹配,显然存在完美匹配,对结果造成贡献;若存在奇环,考虑包含编号最小的那个奇环,若我将其翻转(显然环大小不会为 1),\(\prod T_{i,p_i}\) 会变号,而由于环翻转需要交换环长 -1 次排列做到,所以逆序对奇偶性不改变,所以最终结果会变号,使得两种方案结果两两抵消,所以有奇环的情况没贡献。所以只需要看是否有贡献即可。

\(x_{i,j}\) 该等于多少呢?我们最终的目的是为了防止全偶环情况被误抵消,所以直接考虑在模一个大质数的前提下赋一个随机权值即可。不难发现错误率很低。复杂度 \(O(n^3)\)

那咋求最小权匹配呢?考虑将 \(x_{i,j}\) 的值变为随机权值 \(\times x^{val_{i,j}}\)\(val_{i,j}\) 是边权。

结论:最小权位最低次系数不为 0 的项的次数除以 2。

证明:设答案为 \(\frac{t}{2}\)。假设最小权匹配的方案为 \((u_i,v_i)\),则令 \(p_{u_i}=v_i,p_{v_i}=u_i\) 即为一种次数为 \(t\) 的方案。对于其他方案,由于权值非负,所以如果有环长 \(\ge 4\) 的环,必然会有边的权值被浪费,次数会增大,一定不优。

那怎么求权值为多项式的行列式呢?考虑到权值为多项式的行列式仍然是多项式,而答案不会超过 \(\frac{\sum a_i}{2}\),所以行列式的次数也不会超过 \(\sum a_i\),插值即可,即,令 \(x=0\sim \sum a_i\) 跑权值为整数的行列式,最后插出来每一项的系数即可。由于要求 \(n\) 次行列式,所以复杂度 \(O(n^4)\)

posted @ 2026-01-07 12:07  dcytrl  阅读(11)  评论(0)    收藏  举报