算法
全都想到了, 不会读入和 \(\rm{LCA}\)
直接把赛时记录的拉过来
对于 \(50 \%\) 的数据点, 直接输出 \(-1\) 即可
前 \(20 \%\) 直接预处理即可
注意到一个很强的性质, 即
保证在此之前在城市 \(x\) 与 \(y\) 之间不存在任何路径
也就是说每次连边都是加入割边, 最终的图一定是一个森林
并查集处理, 同连通块之间相当于一颗树, 把最终的树建出来之后, 离线的去处理询问即可, 具体的, 对于最终的树和询问时的树, 只要他们在询问时已经联通, 那么最短路不会发生变化, 即 \(\rm{LCA}\) 不变
时间复杂度 \(\mathcal{O} (q + n \log n + q \log n)\)
至此, 可以解决本题
不是哥们 \(\rm{T2}\) 比 \(\rm{T1}\) 简单多少????
框架
读入的时候边建树边判断 \(-1\) , 建完之后跑 \(\rm{LCA}\) 逐个处理
代码
让我写一写, 第一次写神秘题目
不过把后面的看完再说, 让我看看 \(\rm{T3}\) 怎么个事
总结
没啥好说的, 简单题, 打不出来真抽象