题解
朴素做法:
每次询问,二分最小边,然后bfs遍历查看是否能到达,时间复杂度 \(O(q\cdot logn\cdot m )\)
优化:
如果答案里的最小边是 \(k\) ,那么代表所有边权不小于 \(k\) 的边都可以使用,因此可以直接从大到小加入边,直至起点与终点连接
时间复杂度 \(O(q\cdot m \cdot logm )\)
这个做法虽然没有优化多少,但是这个思想给了我们启发,因为这个过程有点像求最大生成树的过程(并查集做法,这里的最大生成树是指树中最小的边最大)
而对于每一次查询,其实最大生成树是一样的,因此我们只需要在查询前求一次最大生成树,并用带权并查集维护距离
时间复杂度 \(O(q+mlogm)\)
code
标签:NOIP2013,cdot,复杂度,查集,货车运输,生成,P1967
From: https://www.cnblogs.com/pure4knowledge/p/18334482