旅行
题号:NC23179
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小X正在C国旅游。

C国一共有个城市,城市间有一些长度为双向道路将他们连接在了一起,每两个城市之间都有且仅有一条路径可以到达。换句话说,这个城市形成了一棵树。

现在C国建造了类不同的公园,每类公园都分布在一些不同的城市。

每次小X会从一个城市出发,并且预先选好了一个公园种类。他现在想知道如果他想去有这类公园的城市最近需要走多远。

本题强制在线。

请选手注意读入数据对程序运行时间的影响。

输入描述:

第一行三个正整数,表示城市个数,公园种类数和询问次数。

接下来  行,每行两个正整数  表示一条双向道路。

接下来  行,每行先给出一个正整数 ,表示这个点集的大小,接下来给出  个正整数表示这个点集。

接下来  行,每行两个正整数 ,表示加密后的这次询问的点和点集编号。

注意:你需要对询问进行解密。

解密方法为:

为上一次询问的答案,第一次询问时为0。


输出描述:

一共行每行一个正整数表示这次询问的答案。
示例1

输入

复制
10 3 5
1 2
1 3
2 4
2 5
2 6
5 8
6 10
3 7
3 9
3 8 2 7
5 1 3 5 7 9
10 1 2 3 4 5 6 7 8 9 10
10 1
10 2
10 3
4 1
2 1

输出

复制
0
0
1
0
0

备注:

保证读入的数字都在int范围内。