Editorial for Đường đi ngắn nhất


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: Yunan

Với điều kiện M \le N+10, ta có thể xem đồ thị đã cho là một cây gồm N-1 cạnh và có thêm tối đa 11 cạnh giữa các đỉnh.

Gọi 11 cạnh này là các cạnh đặc biệt, và các đỉnh tương ứng là các đỉnh đặc biệt. Đồ thị có tối đa K=22 đỉnh đặc biệt.

Với mỗi truy vấn cần tìm độ dài đường đi ngắn nhất giữa hai đỉnh uv, đáp án truy vấn là đường đi ngắn nhất trong hai cách:

  • Đỉnh u có thể đến đỉnh v chỉ thông qua các cạnh của cây.
  • Đỉnh u đến một đỉnh x là đỉnh đặc biệt thông qua các cạnh của cây, từ đỉnh x đến một đỉnh đặc biệt y (y \neq x) thông qua các cạnh của cây và các cạnh đặc biệt, từ đỉnh y đến đỉnh v thông qua các cạnh của cây.

Khi đó, có tối đa K^2 cặp đỉnh (x,y), ta có thể tính toán trước độ dài đường đi ngắn nhất giữa các cặp (x,y) thông qua BFS.

Độ phức tạp: O(NlogN + K(N+M) + QK^2logN)


Comments