T1
首先可以花 \(O(n(n + m))\) 的时间求出任意两个点是否可以通过至多转车 \(k\) 次到达。若 \(f_{u, v} = 1\) 表示可以,否则不可以。
先暂时忽略景点不能相同的限制。因为有 \(4\) 个景点,不能 \(O(n^4)\) 全部枚举,我们尝试枚举其中的两个:\(\text{B, C}\),需满足 \(f_{C, D} = 1\)。而对于 \(\text{A}\) 来说,需要 \(f_{1, A} = f_{A, B} = 1\),我们只需要花 \(O(n)\) 的时间暴力找到分数最大的即可。对于 \(\text{D}\) 可以做类似的操作。(这也是为什么枚举 \(\text{B, C}\) 的原因。)
现在来处理景点可能相同的情况,首先保证 \(\text{(A,B), (B, C), (C, D)}\) 不同是容易的,只需要再保证 \(\text{(A, C), (B, D), (A, D)}\) 不同即可。我们发现对于 \(\text{A, D}\) 都只有两个不能和它相同。所以我们记录分数前 \(3\) 大的 \(\text{A, D}\),暴力枚举 \(3^2 = 9\) 种情况判断是否合法即可。
时间复杂度:\(O(nm + 9n^2)\)。
思路感觉还是挺暴力的。