디저트 카페
시간 제한1초메모리 제한512 MB
가중치 트리에서 k개의 아파트 지점이 주어질 때, 어떤 아파트 지점 z가 다른 모든 지점보다 p에 더 가까운 그러한 지점 p의 개수를 센다.
문제
창업을 꿈꾸는 김 씨는 대학을 졸업한 뒤 준비해 온 디저트 카페를 열려고 한다. 김 씨가 사는 마을의 도로망은 아래 그림과 같이 트리 구조, 즉 연결된 비순환 그래프를 이룬다. 마을에는 디저트 카페의 후보지가 n곳 있다. 아래 그림에서 원은 디저트 카페 후보지, 두 후보지 사이의 선분은 도로, 선분에 적힌 값은 도로의 길이를 나타낸다.

이 마을에는 k개의 아파트 단지가 있으므로, 김 씨는 디저트 카페를 아파트 단지에 최대한 가까운 곳에 두고 싶어 한다. 위 그림에는 A, B, C로 표시된 후보지에 세 개의 아파트 단지가 있다. 김 씨는 경쟁력과 수익성을 고려하여 다음 조건을 만족하는 후보지를 좋은 자리라고 생각한다.
두 후보지 x와 y 사이의 도로망 위 최단 경로의 길이를 d(x, y)라 하자. 후보지 p는, 아파트 단지가 있는 후보지 z가 존재하여 모든 후보지 q (≠ p)에 대해 d(p, z) < d(q, z)를 만족하면 좋은 자리이다.
위 그림에서 후보지 2, 4, 5, 6, 8, 9가 좋은 자리이다. 예를 들어 후보지 6은 후보지 5를 제외한 다른 어떤 후보지보다 아파트 단지 B에 가깝고, 후보지 5보다 아파트 단지 A에 가까우므로 좋은 자리이다. 즉 후보지 5에 있는 아파트 단지 B에 대해 q ∈ {1, 2, 3, 4, 7, 8, 9}인 모든 q가 d(6, 5) < d(q, 5)를 만족하고, 후보지 2에 있는 아파트 단지 A에 대해 d(6, 2) < d(5, 2)가 성립한다. 후보지 7은 후보지 6보다 가까운 아파트 단지가 하나도 없으므로 좋은 자리가 아니다.
마을의 후보지와 아파트 단지 정보가 주어졌을 때, 좋은 자리의 개수를 출력하는 프로그램을 작성하라.
입력
프로그램은 표준 입력에서 데이터를 읽는다. 입력의 첫 줄에는 두 정수 n과 k (3 ≤ n ≤ 100,000, 1 ≤ k ≤ n)가 주어지며, n은 후보지의 수, k는 아파트 단지의 수이다. 후보지는 1부터 n까지 번호가 매겨진다. 이어지는 n − 1개의 줄에는 각각 세 정수 i, j, w (1 ≤ i, j ≤ n, 1 ≤ w ≤ 1,000)가 주어지며, i와 j는 후보지, w는 i와 j 사이 도로의 길이이다. 마지막 줄에는 마을에서 아파트 단지가 있는 위치를 나타내는 k개의 정수가 주어진다.
출력
프로그램은 표준 출력에 답을 쓴다. 정확히 한 줄을 출력한다. 그 줄에는 좋은 자리의 개수가 있어야 한다.