#P14472. [集训队互测 2025] Misaka Network

[集训队互测 2025] Misaka Network

题目背景

由于评测机性能差异,本题时限额外增加了 3.5 秒。

题目描述

一方通行在执行任务时接入了由御坂 1003210031+n10032\sim 10031+n 号共 nn 位御坂妹妹组成的临时御坂网络,每位御坂妹妹拥有一些信息,为了保证存储效率,妹妹们所拥有的信息互不相同。

临时御坂网络有两种连接 T1,T2T_1,T_2,分别构成树形结构。

由于计算需求,妹妹们有时需要交换信息。具体地,若两位御坂妹妹间同时有两种连接,那么她们可以交换她们拥有的信息(不会保留自己原有的信息),同时会交换在 T2T_2 中的连接(即若另一位御坂妹妹和第一位有第二种连接,那么这个连接会变成她和第二位的,反之同理)。

最后之作非常好奇妹妹们拥有信息的不同状态有多少种,两种状态不同当且仅当存在一位御坂妹妹在这两种情况中所拥有的信息不同。

她设想了若干种网络的形态,并想对于每种形态都计算出上述问题的答案(因为是设想,所以并不一定保证 n9969n\leq 9969)。

御坂网络在 1s 内就计算出了答案,不过因为好玩,所以最后之作想让你帮忙验算一下,你需要告诉她状态数对 998244353998244353 取模的结果。

简要题意:

给定两棵 nn 个点的无根树 T1,T2T_1,T_2,节点编号为 1n1\sim n

有一个 1n1\sim n 的排列 pp,初始时 pi=ip_i=i,你可以进行若干次操作,每次操作选择两个点 u,vu,v,满足 u,vu,vT1T_1 中相邻且 pu,pvp_u,p_vT2T_2 中相邻,然后交换 pup_upvp_v,问能得到多少种不同的 pp,答案对 998244353998244353 取模。

tt 组数据。

输入格式

第一行一个整数 tt 表示数据组数。

接下来依次输入每组测试数据。对于每一组测试数据:

11 行一个整数 nn,表示临时御坂网络由 nn 位御坂妹妹组成。

2n2\sim nn1n-1 行,每行两个整数 u,vu,v 表示 T1T_1 中御坂 10031+u10031+u 号和 10031+v10031+v 号间有连接。

n+12n1n+1\sim 2n-1n1n-1 行,每行两个整数 u,vu,v 表示 T2T_2 中御坂 10031+u10031+u 号和 10031+v10031+v 号间有连接。

输出格式

输出共 tt 行,每行一个整数,第 ii 行的整数表示第 ii 组数据的答案对 998244353998244353 取模的结果。

1
5
4 5
3 2
4 2
1 3
4 5
1 2
4 3
3 2
8

提示

n\sum n 表示一个测试点内所有数据的 nn 的和。

对于所有数据,满足 $1\leq t\leq 10^5,1\leq n\leq 10^6,\sum n\leq 2\times 10^6,1\leq u,v\leq n$,保证 T1,T2T_1,T_2 是树。

子任务编号 nn n\sum n 特殊限制 分值
11 10\le 10 100\le 100 44
22 105\le 10^5 T1=T2T_1 = T_2
33 ^ T2T_2 是一条链 1212
44 100\le 100 1000\le 1000 88
55 1000\le 1000 9969\le 9969 ^ 2020
66 5×104\le 5 \times 10^4 2×105\le 2 \times 10^5 1616
77 2×105\le 2 \times 10^5 6×105\le 6 \times 10^5 2020
88 106\le 10^6 2×106\le 2 \times 10^6 1616

建议使用较快的读入方式。