--- author: little tags: Đường dẫn khí title: Đường dẫn khí Solution --- $\Huge\text{Đường dẫn khí Solution}$ ------- :::info 📌 Tags: `dijkstra` ✍️ Writer: little 📋 Content: [TOC] ::: ----- ## Thuật toán Gọi $dist[u][k]$ là tổng số chi phí nhỏ nhất khi đi từ đỉnh $1$ đến đỉnh $u$ và đã sử dụng $k$ ống dẫn khí đốt. Ta chuyển trạng thái như sau: ```cpp= if(dist[v][c] > dist[u][c] + cost[u][i]) { dist[v][c] = dist[u][c] + cost[u][i]; pq.push({dist[v][c], {v, c}}); } if(c + 1 <= k && dist[v][c + 1] > dist[u][c]) { dist[v][c + 1] = dist[u][c]; pq.push({dist[v][c + 1], {v, c + 1}}); } ``` ---- Tham khảo code ở [đây](https://ideone.com/vUtDS8)