题解:CF1566G Four Vertices
这题看上去就是分类讨论即可。
如果两条最短的边无公共点,答案就是这两条边的长度之和。
否则让我们考虑第三条边,如果与第一条边无公共点,那么答案就是第一条与第三条的长度之和。
由于没有重边,剩下的 case 就是菊花和三元环。
引理:答案一定包含这三条边中至少一条。
证明:如果不是,那么一定能删去一条边并调整为这三条边中任意一条。
菊花的时候可以构造出前三条边之和,否则,我们只需计算钦定端点既不是
不咋好写,时间复杂度
但是事实上,用线段树维护 XOR Hash 是不必要的,可以发现一条边在它的两个端点有一个权值排不进前三就没有用,因此可以开 set 暴力维护,感觉比较好写。
https://codeforces.com/contest/1566/submission/343664951。