The End Dimension#12420

The End Dimension (Розбір)

Автор задачі:

De3b0o

Підготовлено:

De3b0o

Відредаговано:

Hasan Saleh (MathModel)

Розв’язок

Спостереження:

  • Клітини, з'єднані без проходження через перешкоди, утворюють компоненти зв’язності. Якщо початок і ціль у тій самій компоненті, телепортація не потрібна.

  • Ніколи не вигідно використовувати більше ніж один телепорт.

Алгоритм:

  1. Позначити всі компоненти зв’язності за допомогою DFS/BFS.

  2. Запам’ятати, які компоненти містять телепорти.

  3. Запустити BFS одночасно з усіх телепортів, щоб обчислити мінімальну відстань до найближчого телепорта.

  4. Для кожного запиту (x,y,b,c):

    • Якщо і у тій самій компоненті, відповідь .

    • Інакше, якщо обидві клітини належать компонентам із телепортом, відповідь .

    • Інакше, досягти неможливо, відповідь .

Загальна складність: \mathcal{O}(n \cdot m + q).