// 1971. Find if Path Exists in Graph
/**
 * @param {number} n
 * @param {number[][]} edges
 * @param {number} source
 * @param {number} destination
 * @return {boolean}
 */
const validPath = (n, e, s, d) => {
  let map = new Map();

  for (let i = 0; i < e.length; i++) {
    map.set(e[i][0], (map.get(e[i][0]) || []).concat(e[i][1]));
    map.set(e[i][1], (map.get(e[i][1]) || []).concat(e[i][0]));
  }

  const findInLayer = (list, count) => {
    if (count === n || 0 === list.length) return false;
    if (list.includes(d)) return true;

    for (let i = 0; i < list.length; i++) {
      return findInLayer(map.get(list[i]), count + 1);
    }
  }

  return (undefined === map.get(s)) ? true : findInLayer(map.get(s), 0);
};