Yoshinow2001 已经很久没有登录《原神》了,提瓦特大陆地图上的草神瞳也越来越多了。
《原神》的地图可以看作一个包含 $n$ 个点和 $m$ 条边的无向连通图 $G = (V, E)$,其中每个顶点 $v \in V$ 代表地图上的一个位置,每条边 $e = (v_s, v_t)$ 代表从点 $v_s$ 到 $v_t$ 的道路。
由于 Yoshinow2001 有很多草神瞳没有收集,他会给你总共 $Q$ 次询问,每次询问给出图 $G$ 上的 $k$ 个顶点 $\{a_1, a_2, \dots, a_k\}$,这些顶点需要收集草神瞳。他想知道有多少个顶点对 $(S, T)$ 满足 $1 \le S \le T \le n$,使得从 $S$ 到 $T$ 的任意简单路径都恰好经过集合 $\{a_1, \dots, a_k\}$ 中的所有顶点。
输入格式
每个测试点包含多组测试数据。输入的第一行包含一个整数 $T(1 \le T \le 1 \times 10^4)$,表示测试数据的组数。接下来是各组测试数据的描述。
每组数据的第一行包含三个整数 $n, m, Q(1 \le n \le 5 \times 10^5, 1 \le m, Q \le 1 \times 10^6)$,分别表示顶点数、边数和询问次数。
接下来的 $m$ 行,每行包含两个整数 $u_i, v_i (u_i \neq v_i)$,表示 $u_i$ 和 $v_i$ 之间的一条无向边。保证对于任意 $1 \le i < j \le m$,满足 $(u_i, v_i) \neq (u_j, v_j)$。
接下来的 $Q$ 行,每行以一个整数 $k$ 开头,表示查询的顶点数量,随后是 $k$ 个整数 $a_1, \dots, a_k$,表示这些顶点。
保证每组测试数据中 $n$ 的总和不超过 $1.5 \times 10^6$,$m, Q$ 以及 $\sum_{i=1}^Q k_i$ 的总和不超过 $3 \times 10^6$。
输出格式
对于每组测试数据,输出 $Q$ 行,第 $i$ 行包含一个整数,表示第 $i$ 次询问的答案。
说明
在本题中,你可能需要更多的栈空间来通过此题。如果你使用 C++,建议在 main 函数中加入以下代码:
int main() {
int size(512<<20); // 512M
__asm__ ( "movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));
// YOUR CODE
...
exit(0);
}
如果你使用了上述代码,请千万不要忘记在 main 函数的末尾添加 exit(0);,否则你的代码可能会得到 RE。
样例
输入 1
1 3 3 3 1 3 3 2 1 2 1 1 2 2 3 3 1 2 3
输出 1
3 1 0