jzoj5153

题意

给定\(n\)\(m\)条带权有向边的图,求所有的以\(n\)为根的内向树形图的边权和之和。\(n\le 300,m\le 10^5\)

做法

矩阵树,考虑一个暴力\(O(mn^3)\)
先算出所有的树形图个数,单独考虑某一条边,去掉后的树形图个数,补集就是用到其的个数

考虑优化,其实就是修改某一行,快速求行列式:
考虑若将第\(k\)行修改成\(c_1,c_2,...,c_{n-1},c_n\),其中\(c_j=\sum\limits_{i=1}^n A_{i,j}x_i\),那么此时矩阵的行列式为\(det(A)\times x_k\)
显然,\(x_k\)可以表示为这样的形式\(\sum\limits_{i=1}^n a_ic_i\)
可以先根据\(c_j=\sum\limits_{i=1}^n A_{i,j}x_i\),把系数\(\{a\}\)解出来,然后就可以直接查询了

\(O(n^3+nm)\)

posted @ 2020-05-12 14:37  Grice  阅读(172)  评论(0编辑  收藏  举报