1번 노드에서 각 노드로 최단 경로로 이동했을 때
간선을 가장 많이 거치는 노드의 수?
while)으로 해결/**
 * @param {number} n 노드 개수 2~20,000
 * @param {number[]} edge 간선 정보, 1~50,000
 * @returns {number} 가장 멀리 떨어진 노드 갯수
 */
const solution = (n, edge) => {
	const START = 1;
	const results = Array(n + 1).fill(Number.MAX_SAFE_INTEGER);
	results[START] = 0;
	const graph = edge.reduce((acc, val) => {
		const [a, b] = val;
		acc[a] ? acc[a].push(b) : (acc[a] = [b]);
		acc[b] ? acc[b].push(a) : (acc[b] = [a]);
		return acc;
	}, {});
	const visited = Array(n + 1).fill();
	visited[START] = true;
	const queue = [{ node: START, count: 0 }];
	let maxi = 0;
	while (queue.length) {
		const { node, count } = queue.shift();
		results[node] = count;
		if (maxi < count) maxi = count;
		for (const nextNode of graph[node]) {
			if (visited[nextNode]) continue;
			queue.push({ node: nextNode, count: count + 1 });
			// 여기서 다음 노드에 대해 미리 방문 처리해주어서 중복 방문 제거
			// 모든 간선 길이가 1이기 때문에 가능한 듯?
			visited[nextNode] = true;
		}
	}
	return results.filter((e) => e === maxi).length;
};
