我淦了这个T3
T1
考虑模意义下解方程。
我们对每一个点列一个方程。
可以列出(n-1)个,另外一个加不加是一样的,因为可以用(n-1)个来表示(n)个。
那么建树。
剩下的(m-(n-1))条边和树边可以构成(m-(n-1))个环。
然后可以列出来剩下的(m-(n-1))个方程。
总共(m)个方程(m)个变量。
然后我们发现后(m-(n-1))个方程仅含有一条非树边。
那么做主元分析。
把非树边用常数和树边表示出来然后代入前(n-1)条边。
那么还剩下树边为变量,(n-1)个方程(n-1)个变量。
全都解出来,然后回代非树边,得解。
T2
我们要求得两条路径不相交得方案。
其实就是(s_1=(2,1)
ightarrow t_1=(n,m-1))和(s_2=(1,2)
ightarrow t_2=(m,n-1))这两条路径不相交得方案。
枚举中间交叉的第一个点,(p)。
然后交换以后的路径。
得到的就是(s_1
ightarrow p
ightarrow t_2,s_2
ightarrow p
ightarrow t_1)这两条路。
那么答案就是:
((s_1
ightarrow t_1,s_2
ightarrow t_2)-(s_1
ightarrow t_2,s_2
ightarrow t_1))
并且路径不要求不相交。
那么我们可以对每一条路径都做一个(C^3)的(dp)就行了。
仍然是容斥做这个经典的(dp)。
T3
按照题意模拟建树。
求出最短路(DAG)和最短路题意树。
对于每一个点维护一个(C_x)表示深度最浅的,不需要经过树边而(x)能够翻到的点为(C_x)。
那么在最短路(DAG)上我们把非树边用来更新(C_x)。
对于一条边((x,y)),我们可以用(x)来更新(y),那么(C_y=min(C_y,minlimits_{iin{x
ightarrow lca(x,y)}})C_i)
这样我们就搞完了。
用一个倍增来存这个东西,查询的时候直接查询就可以了。
然而我写的太麻烦了。
。。。。
调到猝死。