#include <bits/stdc++.h>
#define maxn 302333
#define maxm 606666
using namespace std;
using i64 = long long;
const i64 mod = 998244353;
const i64 inv2 = 499122177;
i64 Pow(i64 x, i64 p) {
i64 r = 1;
for (; p; p >>= 1, x = x * x % mod) if (p & 1) r = r * x % mod;
return r;
}
int head[maxn], nxt[maxm], to[maxm], ec = 1, fa[maxn];
int siz[maxn], is[maxn];
void add(int u, int v) {
nxt[++ec] = head[u], head[u] = ec, to[ec] = v;
}
i64 n, k;
i64 ans = 0;
i64 poss[maxn];
void dfs(int x) {
siz[x] = is[x];
for (int e = head[x]; e; e = nxt[e]) {
if (to[e] != fa[x]) {
fa[to[e]] = x;
dfs(to[e]);
siz[x] += siz[to[e]];
}
}
}
void calc_ans(int x) {
for (int e = head[x]; e; e = nxt[e]) {
if (to[e] != fa[x]) {
ans += (i64) siz[to[e]] * (k - siz[to[e]]);
calc_ans(to[e]);
}
}
}
int main() {
scanf("%lld%lld", &n, &k);
for (int i = 1, x; i <= k; ++i) scanf("%d", &x), is[x] = 1, poss[x] = 1;
for (int i = 1, u, v; i < n; ++i) {
scanf("%d%d", &u, &v);
add(u, v), add(v, u);
}
dfs(1);
calc_ans(1);
for (int i = 1, e = 2; i < n; ++i, e += 2) {
int u = to[e ^ 1], v = to[e];
if (fa[u] == v) swap(u, v); // u is now father for sure
ans = (ans + (
((k - siz[v] - 1) - siz[v] + mod) * poss[u] % mod * (mod + 1 - poss[v]) % mod
+ ((siz[v] - 1) - (k - siz[v]) + mod) * (mod + 1 - poss[u]) % mod * poss[v] % mod
) * inv2 % mod) % mod;
poss[u] = poss[v] = (poss[u] + poss[v]) * inv2 % mod;
}
// printf("%lld\n", ans);
printf("%lld\n", ans * 2 * Pow(k * (k - 1) % mod, mod - 2) % mod);
return 0;
}
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |
17. Letter Combinations of a Phone Number | 5. Longest Palindromic Substring |