#CF2237H. 史莱姆与询问 / H. Slime and Queries

    ID: 18582 传统题 2000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>CodeforcesOrder Capital Round 2 (Codeforces Round 1104, Div. 1 + Div. 2)

史莱姆与询问 / H. Slime and Queries

H. Slime and Queries

Source: Codeforces 2237H
Contest: Order Capital Round 2 (Codeforces Round 1104, Div. 1 + Div. 2)
Time limit: 5 seconds
Memory limit: 1024 megabytes

Statement

You are given a tree with nn vertices numbered from 11 to nn. A slime occupies exactly mm vertices of the tree. It is guaranteed that the subgraph induced by the occupied vertices is connected.

Initially, the slime occupies vertices s1,s2,,sms_1,s_2,\ldots,s_m.

First, we define a function ff on a sequence of vertices. Consider a sequence a1,a2,,aka_1,a_2,\ldots,a_k. There are kk pieces of food. For each ii, the ii-th piece of food is located at vertex aia_i. At first, only the first piece of food appears.

The slime may perform the following operations any number of times:

  • Move. The slime removes itself from one currently occupied vertex and expands to one currently unoccupied vertex. Formally, let SS be the current set of occupied vertices. Choose a vertex uSu\in S and a vertex vSv\notin S, and replace SS with (Su)v(S\setminus{u})\cup{v}. After the operation, the subgraph induced by SS must still be connected.
  • Eat. If the ii-th piece of food has appeared and the slime currently occupies vertex aia_i, then the slime may eat the ii-th piece of food. If 1i<k1\le i \lt k, the (i+1)(i+1)-th piece of food appears immediately after that. Eating does not change the occupied vertices.

Define f([a1,a2,,ak])f([a_1,a_2,\ldots,a_k]) as the minimum number of Move operations needed for the slime to eat all kk pieces of food in order, starting from the initial occupied vertices s1,s2,,sms_1,s_2,\ldots,s_m.

There are qq queries. The input is forced online. The input gives encoded values p1,p2,,pqp_1,p_2,\ldots,p_q. Let ans0=0\mathrm{ans}_0=0. For each i=1,2,,qi=1,2,\ldots,q, the actual vertex of the ii-th query is ci=((pi1+ansi1)modn)+1c_i=((p_i-1+\mathrm{ans}_{i-1}) \bmod n)+1, where ansi=f([c1,c2,,ci])\mathrm{ans}_i=f([c_1,c_2,\ldots,c_i]).

For each i=1,2,,qi=1,2,\ldots,q, output ansi\mathrm{ans}_i.

Input

Each test contains multiple test cases. The first line contains the number of test cases tt (1t1041 \le t \le 10^4). The description of the test cases follows.

The first line of each test case contains three integers nn, mm, and qq (2mn1052\le m\le n\le 10^5, 1q1051\le q\le 10^5) — the number of vertices in the tree, the number of vertices occupied by the slime, and the number of queries.

Each of the next n1n-1 lines contains two integers uu and vv (1u,vn1\le u,v\le n, uvu\ne v), denoting an edge of the tree.

The next line contains mm distinct integers s1,s2,,sms_1,s_2,\ldots,s_m (1sin1\le s_i\le n) — the vertices initially occupied by the slime. It is guaranteed that these vertices induce a connected subgraph.

The next line contains qq integers p1,p2,,pqp_1,p_2,\ldots,p_q (1pin1\le p_i\le n) — the encoded query vertices.

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5.

It is guaranteed that the sum of qq over all test cases does not exceed 10510^5.

Output

For each test case, output qq integers. The ii-th integer should be ansi\mathrm{ans}_i.

Note

In the explanations below, the underlined vertex is the newly occupied vertex after a Move, and vertices where the slime eats food are written in bold.

In the first test case, after decoding, the food appears at vertices 1,4,51,4,5 in order. Initially, the slime occupies [1,2][1,2].

  • For [1][1], the slime already occupies vertex 1\mathbf{1}, so ans1=0\mathrm{ans}_1=0.
  • For [1,4][1,4], one optimal process is $[\mathbf{1},2]\to[2,\underline{3}]\to[3,\underline{\mathbf{4}}]$, so ans2=2\mathrm{ans}_2=2.
  • For [1,4,5][1,4,5], one optimal process is $[\mathbf{1},2]\to[2,\underline{3}]\to[3,\underline{\mathbf{4}}]\to[3,\underline{\mathbf{5}}]$, so ans3=3\mathrm{ans}_3=3.

In the second test case, after decoding, the food appears at vertices 5,3,6,25,3,6,2 in order. Initially, the slime occupies [1,2,3][1,2,3].

  • For [5][5], one optimal process is [1,2,3][1,3,5][1,2,3]\to[1,3,\underline{\mathbf{5}}], so ans1=1\mathrm{ans}_1=1.
  • For [5,3][5,3], the same process also lets the slime eat at vertex 3\mathbf{3}, so ans2=1\mathrm{ans}_2=1.
  • For [5,3,6][5,3,6], one optimal process is $[1,2,3]\to[1,3,\underline{\mathbf{5}}]\to[1,3,\underline{\mathbf{6}}]$, so ans3=2\mathrm{ans}_3=2.
  • For [5,3,6,2][5,3,6,2], one optimal process is $[1,2,3]\to[1,3,\underline{\mathbf{5}}]\to[1,3,\underline{\mathbf{6}}]\to[1,\underline{\mathbf{2}},3]$, so ans4=3\mathrm{ans}_4=3.

In the third test case, after decoding, the food appears at vertices 7,5,6,4,37,5,6,4,3 in order. Initially, the slime occupies [1,2,4][1,2,4].

  • For [7][7], one optimal process is $[1,2,4]\to[1,2,\underline{3}]\to[1,3,\underline{\mathbf{7}}]$, so ans1=2\mathrm{ans}_1=2.
  • For [7,5][7,5], one optimal process is $[1,2,4]\to[1,2,\underline{3}]\to[1,3,\underline{\mathbf{7}}]\to[1,\underline{2},3]\to[1,2,\underline{\mathbf{5}}]$, so ans2=4\mathrm{ans}_2=4.
  • For [7,5,6][7,5,6], one optimal process is $[1,2,4]\to[1,2,\underline{3}]\to[1,3,\underline{\mathbf{7}}]\to[1,\underline{2},3]\to[1,2,\underline{\mathbf{5}}]\to[1,2,\underline{3}]\to[1,3,\underline{\mathbf{6}}]$, so ans3=6\mathrm{ans}_3=6.
  • For [7,5,6,4][7,5,6,4], continue with $[1,3,\mathbf{6}]\to[1,\underline{2},3]\to[1,2,\underline{\mathbf{4}}]$, so ans4=8\mathrm{ans}_4=8.
  • For [7,5,6,4,3][7,5,6,4,3], continue with [1,2,4][1,2,3][1,2,\mathbf{4}]\to[1,2,\underline{\mathbf{3}}], so ans5=9\mathrm{ans}_5=9.

In the fourth test case, after decoding, the food appears at vertices 3,4,5,2,13,4,5,2,1.

In the fifth test case, after decoding, the food appears at vertices 6,1,3,5,2,46,1,3,5,2,4.

In the sixth test case, after decoding, the food appears at vertices 7,5,6,1,47,5,6,1,4.

Examples

10
5 2 3
3 5
2 1
4 3
3 2
1 2
1 4 3
6 3 4
5 1
1 3
6 1
4 1
2 1
1 2 3
5 2 5 6
7 3 5
3 7
4 2
1 3
2 1
6 3
5 2
1 2 4
7 3 2 5 2
5 2 5
3 1
1 5
2 1
4 1
1 2
3 3 3 4 2
6 3 6
4 6
3 2
1 2
5 4
2 4
2 4 5
6 6 1 2 4 6
7 4 5
5 2
3 1
2 1
3 7
6 3
4 2
1 2 3 4
7 4 4 5 1
4 3 4
3 1
1 4
2 1
1 2 3
4 1 2 3
6 2 5
2 4
5 4
2 1
6 4
3 2
1 2
6 1 1 1 2
7 2 5
2 4
7 3
3 6
1 3
1 2
5 2
1 2
4 6 1 6 5
8 4 6
5 2
3 2
7 5
4 3
8 7
1 2
6 5
2 3 4 5
8 7 3 3 7 8
0 2 3
1 1 2 3
2 4 6 8 9
1 2 3 4 4
1 2 3 4 4 4
1 2 3 3 4
1 1 2 2
2 4 6 8 9
1 4 7 10 11
2 3 4 4 5 5