-
思路: 任选一个
中的点做为树的根节点,对于所有其他的在
中的节点,我们只需要选择连接该节点与其父节点的边,就可以满足题目要求。
-
代码:
def solve(testcase):
n, m = MI()
adj = [[] for _ in range(n)]
edges = []
for i in range(n - 1):
u, v = GMI()
adj[u].append((v, i))
adj[v].append((u, i))
edges.append((u, v))
A = LII()
for i in range(m):
A[i] -= 1
B = [False for _ in range(n)]
for a in A:
B[a] = True
print(m - 1)
q = deque()
q.append((A[0], -1))
while q:
u, fa = q.popleft()
for v, idx in adj[u]:
if v != fa:
q.append((v, u))
if B[v]:
a, b = edges[idx]
print(a + 1, b + 1)
for testcase in range(1):
solve(testcase)

京公网安备 11010502036488号