Answer

Answer

t.me/js_test

Ответ:

const visitAllRooms = (rooms) => {
const DFS = (rooms, currentRoom, visited) => {
  let visitedCount = 1;
  visited[currentRoom] = true;

  for (const item of rooms[currentRoom])
    if (!visited[item]) visitedCount += DFS(rooms, item, visited);

  return visitedCount;
};
  const visitedCount = DFS(rooms, 0, []);

  return visitedCount == rooms.length;
};

Обьяснение:

Для решения этой задачи воспользуемся методом поиска в глубину. То есть из каждой посещенной комнаты запустим поиск по ключам, которые мы получили. Не забываем считать посещенные комнаты. Зная общее кол-во комнат, в конце мы просто проверим все ли мы смогли посетить.

Детали реализации смотрите в коде.

Код для проверки:

const visitAllRooms = (rooms) => {
  const DFS = (rooms, currentRoom, visited) => {
    let visitedCount = 1;
    visited[currentRoom] = true;

    for (const item of rooms[currentRoom])
      if (!visited[item]) visitedCount += DFS(rooms, item, visited);

    return visitedCount;
  };

  const visitedCount = DFS(rooms, 0, []);

  return visitedCount == rooms.length;
};
console.log(visitAllRooms([[1], [2], [3], []]));
console.log(visitAllRooms([[1, 3], [3, 0, 1], [2], [0]]));



Report Page