其他分享
首页 > 其他分享> > ???

???

作者:互联网

有一棵有根树 \(T\),而你喜欢在树上行走。记 \(P_u\) 代表到根结点的简单路径包含的结点集合,那么如果当前你在点 \(u\),你下一步可以走到 \(v\),当且仅当且 \(u\in P_v\)。当然,你也可以选择不走动,这样会直接结束这个过程。
记 \(f_u\) 代表,从 \(u\) 出发,这样走的方案数是多少,你希望求出的值。但是这个问题太简单了,于是你找到了另外一棵有根树 \(S\),并且尝试用 \(S\) 去对 \(T\) 做一些操作。
初始时,\(T\) 中有 \(n\) 个结点,编号为 \(1...n\)(但事实上,根据后面的描述,这个编号只是为了方便输入树的初始形态);\(S\) 中有 \(m\) 个结点,编号为 \(1...m\)。\(T\) 中的每个节点上都有一个标记,其中是 \(1\) 到 \(m\) 的整数。\(S\) 和 \(T\) 的根节点编号为 \(1\)。
你会进行 \(q\) 次操作,每次操作给出两个 \(1\) 到 \(m\) 的整数:\(x,y\)。此时,你需要选出中所有标记为 \(x\) 的结点,然后在每个结点下面添加上 \(S\) 中以 \(y\) 结点为根的子树来作为新的子树(相当于将 \(S\) 中的一棵子树复制了很多份到 \(T\) 中)。新加上的子树内结点的标记,与这些点在 \(S\) 中的编号相等。
下图是 \(x=1,y=1\) 时操作的结果。其中 \(T\) 中的数字为标记,\(S\) 中的数字为编号。

第一次操作前和每次操作后,你都需要输出问题的答案 \(\sum_uf_u\)。由于答案可能过大,所以你只需要输出答案除以 \(998244353\) 的余数。

标签:,...,结点,标记,当且,编号,操作
来源: https://www.cnblogs.com/Pbriqwq/p/14860423.html