读题可以发现,如果两个村庄不能互相连通,那就算作一对 (a<b)。
显然是可以用floyd全局多源最短路来做的,如果不存在最短路,那么就是不能互通,但是这道题的数据范围N<=10^5,跑floyd复杂度为O(n^3)即10^15远大于10^8,显然是不行,复杂度级别只能是O(n),线性的,或者O(nlogn)。
看一下样例说明

显然如果两个村庄位于同一个连通块中,必然找不出(a<b),如果不在同一个连通块中,必然会产生(a<b),且数量刚好是第一个连通块的村庄数量 乘以 第二个连通块的数量。
为什么?
假设下图,1和2相连,3和4相连。

明显可以发现1与3,4,都不相连,产生了第二个连通块村庄数量的(a<

最低0.47元/天 解锁文章
509

被折叠的 条评论
为什么被折叠?



