intmain(){ int n, k; scanf("%d %d", &n, &k); for (int i = 1; i < n; i++) { int x, y, z; scanf("%d %d %d", &x, &y, &z); edge[i-1] = Edge(x, y, z); } for (int i = 0; i < k; i++) { int x; scanf("%d", &x); machine[x] = true; } sort(edge, edge + n - 1); for (int i = 0; i < maxn; i++) father[i] = i; longlong ans = 0; for (int i = 0; i < n - 1; i++) { int u = edge[i].u; int v = edge[i].v; int w = edge[i].w; int fu = find(u), fv = find(v); if (machine[fu] && machine[fv]) { ans += w; } else { father[fu] = fv; if (machine[fu] || machine[fv]) machine[fv] = true; } } printf("%lld\n", ans); }