#CF1774E. 两枚棋子

两枚棋子

两枚棋子

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一棵以 1 号点为根、含有 nn 个节点的树。初始时两枚棋子均位于根节点。一次操作可将任意一枚棋子沿一条边移动到相邻节点,但操作后的任意时刻,两枚棋子的距离都不得超过 dd。

第一枚棋子必须访问集合 AA 中的所有节点,第二枚棋子必须访问集合 BB 中的所有节点,访问顺序任意。完成访问后,两枚棋子都必须回到根节点。求最少操作次数。

输入格式

第一行包含两个整数 n,dn,d。

接下来 n−1n-1 行,每行两个整数 u,vu,v,表示树边 u−vu-v。

下一行先给出整数 m1m_1,随后给出 m1m_1 个互不相同的节点,构成集合 AA。

最后一行先给出整数 m2m_2,随后给出 m2m_2 个互不相同的节点,构成集合 BB。

输出格式

输出一个整数,表示最少操作次数。

样例输入 1

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

样例输出 1

6

样例输入 2

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

样例输出 2

8

数据范围

  • 2≤d≤n≤2×1052\le d\le n\le2\times10^5;
  • 输入边构成一棵树;
  • 1≤m1,m2≤n1\le m_1,m_2\le n,每个集合内部的节点互不相同。

本题采用独立测试点计分,每个测试点等分。

子任务编号 分值 特殊限制
1 24 n≤8n\le8
2 36 树是一条以 1 号点为端点的链
3 40 无特殊限制

提示

若某枚棋子必须到达节点 xx,另一枚棋子至少要到达 xx 的第 dd 级祖先(深度不足时视为根节点)。