## BJOI2019
## SDOI2019
### SDOI2019世界地图
标签:虚树 ,MST
这题不太好做.
首先,可以预处理出由 $1$ ~ $i$ 列构成的最小生成树.
预处理的时候我们发现要将 $i$ 这一列连到 $1$ ~ $i-1$ 的虚树中.
而 $i$ 与 $i-1$ 只有 $n$ 条边,这 $n$ 条边又仅影响两两点对间路径上的最大值.
所以我们可以只把 $i-1$ 列的点提取出来构成一颗虚树,让这颗虚树去和 $i$ 列合并.
合并操作是容易的:由于边很少,所以我们可以直接把边都拿出来,然后跑一个 $kruskal$.
跑出来后,再把 $i$ 列的点标记为关键节点,然后再求一个虚树.
然后更新新的虚树的权和:显然就是 prefix[i-1]+sum[i]-key[i-1]-key[i]+key[newtree]
对于询问的时候也是同理.
然后预处理的时候空间复杂度是 $O(m \times n)$ 的,每一次处理询问的复杂度是 $O(n \log n)$ 左右吧.