1
var countPairs = function (n, edges, queries) {2
const degree = Array(n + 1).fill(0);3
const edgesMap = new Map();4
const countMemo = new Map();7
for (let [u, v] of edges) {10
const key = `${Math.min(u, v)}-${Math.max(u, v)}`;11
edgesMap.set(key, (edgesMap.get(key) || 0) + 1);13
const sortedDegree = [...degree.slice(1)].sort((a, b) => a - b);15
for (let num of queries) {17
if (countMemo.has(num)) cnt = countMemo.get(num);19
cnt = calculateCount(num);20
countMemo.set(num, cnt);25
function calculateCount(num) {27
high = sortedDegree.length - 1,31
const sum = sortedDegree[low] + sortedDegree[high];39
for (let [key, val] of edgesMap) {40
const [u, v] = key.split("-").map(Number);42
if (degree[u] + degree[v] > num) {43
const newSum = degree[u] + degree[v] - val;44
if (newSum <= num) cnt--;