CF1515G

题意

给定一个带边权的有向图,(q)次询问,给定(u,p,x),问是否存在从(u)出发的回路(可以重复走),使得边权之和(equiv x(mod p))
(n,m,qle 2cdot 10^5,0le x<ple 10^9)

做法

这道题很容易想出做法,下面讲讲理论。

考虑一般情况,给定图为强连通图。

引理1:在模意义下,若从(u)(v)存在(x)长度的路径,则从(v)(u)存在(-x)长度的路径。

证明:
对于(v)到任意一条到(u)的长度为(y)的路径,再加上(u)(v)长度为(x)的路径,绕这个环走,可以得到(ky+(k-1)x(kge 1))(py+(p-1)xequiv -x(mod p))

引理2:在模意义下,若从(u)出发,存在长度为(x)的回路,则从任意点出发都存在长度为(x)的回路。

证明:
对于从(forall u'in V),任意一条(u' ightarrow u)长度为(y)的路径,根据引理1,则存在一条(u ightarrow u')长度为(-y)的路径,从(u')出发,依次经过这三段路径:(y+x+(-y)=x)

任选一点(r)为根,对于任意一棵生成树,令(d_u)为从(r ightarrow u)树上路径和,对于每条非树边((u,v,w)),存在长度为(w+d_u-d_v)的环。

引理3:任何环,都可由上述环线性组合。

证明:
对于环(u_1 ightarrow u_2 ightarrow ldots ightarrow u_k ightarrow u_{k+1}(u_{k+1}=u_1)),对于任意(u_i ightarrow u_{i+1}),若这条边为非树边,则用(w(u_i,u_{i+1})+d_{u_i-d_{u_{i+1}}})表示,最后得到的边权和恰好为这个环。

引理4:任意上述环的线性组合,均可对应图中的某条路径。

证明:
根据引理1,可以简单将两个环合并在一起,因为环之间的路径可以被抵消掉。

至此,将问题转化成了给定(a_1,a_2,ldots,a_m),能否在模意义下线性组合成一个数,这是个经典问题。

原文地址:https://www.cnblogs.com/Grice/p/14878301.html