专栏文章

UVA1464 Traffic Real Time Query System 题解

UVA1464题解参与者 2已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@mipnkc3u
此快照首次捕获于
2025/12/03 14:55
3 个月前
此快照最后确认于
2025/12/03 14:55
3 个月前
查看原文

UVA1464 Traffic Real Time Query System 题解

题目大意

给出一张 nn 个点,mm 条边的无向连通图,问从第 ss 条边到第 tt 号边必须经过多少点。题目有多组数据。

思路

转换问题

这道题类似于 P4320,不过那一题求的是点之间的必经点数,这一题求的是边之间的必经点数。
先建出圆方树,再想如何把边转换成点来做。
根据点双联通分量(下面简称点双)的性质,每条边在且仅在唯一一个点双之中。
所以可以把这条边转换成这条边所在的点双在圆方树中的点,接下来这再求两条边转换成的点之间必须要经过的点。

求边属于的点双

这时候就有一个问题,如何求出一条边所在的点双,先设连接这条边的两个节点编号为 u,vu,v
根据圆方树的性质,uuvv 在圆方树上的距离一定为 2,且 uuvv 路径中间的点一定为这条边所在的点双。
由于距离只有 2,所以 uuvv 在树上的位置关系只有三种。
下面每种情况都用一张图片举例,为了方便表示,设 faafa_aaa 的在树上的父亲,最后要求的点双为 xx

第一种情况:uuvv 父亲的父亲

真不巧,图片炸了,请在评论中告诉我。
这种情况需要判断 u=fafavu=fa_{fa_v},最后要求的点双 xxfavfa_v

第二种情况:vvuu 父亲的父亲

真不巧,图片炸了,请在评论中告诉我。
这种情况需要判断 v=fafauv=fa_{fa_u},最后要求的点双 xxfaufa_u

第三种情况:xxuuvv 共同的父亲。

真不巧,图片炸了,请在评论中告诉我。
这种情况需要判断 fau=favfa_u=fa_v,最后要求的点双 xxfaufa_u

求最终的答案

通过上面的三种情况,能求的 uuvv 这条边的点双 xx,设另一条边的点双为 yy,最终的答案为 xxyy 的必经点的个数。
根据 P4320 的结论,xxyy 的必经点的个数即为 xxyy 路径上割点的个数。
由于 xxyy 都是点双,手摸几组情况可知 xxyy 路径上割点的个数为 l2\frac{l}{2},其中 ll 表示 xxyy 路径的长度。
ll 可以通过倍增 LCA 在 O(logn)O( \log n) 的时间复杂度求出。
最终总时间复杂度为 O(qlogn)O(q \log n)

评论

2 条评论,欢迎与作者交流。

正在加载评论...