#P12573. [集训队互测 2024day13]建设终末树

[集训队互测 2024day13]建设终末树

小 C 和小 Y 种了一棵树 T=(V,E)T=(V, E),她们希望把一个物品集合 SS 中的所有物品都挂到树的节点上。物品 ii 挂在的节点为 aia_i,两个物品可以挂在同一个节点。

小 Y 突发奇想,她定义了一个点集 V0VV_0\subseteq V 的「导出」f(V0)Tf(V_0)\subseteq TV0V_0 中任意两点在树上最短路径的并,定义 fVf_V 表示 ff 的点集,fEf_E 表示 ff 的边集。

小 Y 给出了 qq 个二元集合 (Vj,Sj)(V_j, S_j),其中 VjV,SjSV_j\subseteq V, S_j\subseteq S。她希望对于每个 jj 都能满足 $f_E(V_j)\cap f_E(\{a_k \| k\in S_j\}) = \varnothing$。

VjV_j 的「导出」与 SjS_j 中所有物品所在结点的「导出」二者边集的交集为空。

“Y 你个笨蛋。”小 C 听了之后吐槽了一句,“你就没发现什么不对劲吗。”

于是小 C 补加了 mm 个限制 AiVA_i\subseteq V:对于物品 ii,需要满足 aifV(Ai)a_i\in f_V(A_i)

“现在没问题了。”小 C 和小 Y 说,“但是怎么挂呢?”

请你帮帮她们,判断能否把所有物品挂在树上,如果可以请输出任意一组方案。

输入格式

第一行三个整数 n,m,qn, m, q 分别表示题面中的 V,S,q\|V\|, \|S\|, q

接下来 n1n-1 行,每行两个数 u,vu,v,表示树上有一条 (u,v)(u,v) 的边。

接下来 mm 行,第 ii 行第一个整数表示 Ai\|A_i\|,接下来 Ai\|A_i\| 个整数表示 AiA_i 中每个点的编号。

接下来 2q2q 行,每两行表示一个限制。 + 第 jj 个限制的第一行第一个整数表示 Vj\|V_j\|,接下来 Vj\|V_j\| 个整数表示 VjV_j 中的元素。 + 第 jj 个限制的第二行第一个整数表示 Sj\|S_j\|,接下来 Sj\|S_j\| 个整数表示 SjS_j 中的元素。

输出格式

如果无解,输出 -1,否则输出一行 mm 个整数,第 ii 个整数表示物品 ii 所挂节点的编号,即题面中说的 aia_i

样例输入 #1

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

样例输出 #1

4 1

样例输入 #2

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

样例输出 #2

-1

数据范围与约定

对于所有数据,满足 $3\leq n, m\leq 2000, 0\leq q\leq 5\times 10^5, 0\leq \sum \|V_j\|,\sum \|S_j\|\leq 5\times 10^5, 2\leq \|V_j\|,\|S_j\|\leq \min(n, m, 50)$。

  • 子任务 1(10 分):树是一张菊花图,即它的直径长度为 22
  • 子任务 2(15 分):n,m10,Vj,Sj20n, m\leq 10, \sum \|V_j\|,\sum \|S_j\|\leq 20
  • 子任务 3(20 分):$n, m\leq 500, q\leq 5\times 10^3, \|V_j\|,\|S_j\|=2$,树是一条链,即它的直径长度为 n1n-1
  • 子任务 4(20 分):n,m500,Vj,Sj104n, m\leq 500, \sum \|V_j\|,\sum \|S_j\|\leq 10^4
  • 子任务 5(25 分):Vj,Sj105\sum \|V_j\|,\sum \|S_j\|\leq 10^5
  • 子任务 6(10 分):无特殊限制。