CF1515G

题意

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

做法

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

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

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

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

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

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

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

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

证明:
对于环\(u_1\rightarrow u_2\rightarrow \ldots \rightarrow u_k\rightarrow u_{k+1}(u_{k+1}=u_1)\),对于任意\(u_i\rightarrow 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\),能否在模意义下线性组合成一个数,这是个经典问题。

posted @ 2021-06-12 15:03  Grice  阅读(85)  评论(0编辑  收藏  举报