有一类树上背包(例如 CF1097G Vladislav and a Great Legend),第二维表示子树内选的点数且限制第二维不超过$m$,其总复杂度可证明为$O(nm)$。
它们的代码一般长这样:
1 | void dfs(int u,int last) { |
有一类树上背包(例如 CF1097G Vladislav and a Great Legend),第二维表示子树内选的点数且限制第二维不超过$m$,其总复杂度可证明为$O(nm)$。
它们的代码一般长这样:
1 | void dfs(int u,int last) { |
两条路径$u_1\to v_1,u_2\to v_2$的交这样计算:
1 | // Road中的t:t=0表示空集,t=-1表示全集,t=1表示u到v的路径 |
这个算法用于求解有向图的最小树形图问题。
树形图:图中有一个点作为根,除了根以外,每个点的入度恰好为$1$,并且从根出发可以到达整个图中的任意一个点。
最小树形图就是所有边的边权和最小的树形图。