最短路 Floyed 災後重建

2022-05-24 13:57:08 字數 842 閱讀 3931

做完這道題可以更加理解 \(floyed\) 的本質。

我們考慮 \(floyed\) 的過程,是不斷的列舉乙個中轉點 \(k\),通過這個中轉點來更新其他點的答案。

當我可以用乙個點 \(k\) 更新 \(i\),\(j\) 答案的時候,代表的實際意義是什麼呢?就是 \(i\) 和 \(j\) 與 \(k\) 點是聯通的。

我們可以發現這和題面上按照時間新增聯通的點是對應的!

於是我們便能有這樣的做法:按照時間依次將可更新的點用於更新,然後輸出聯通情況即可。

**:

// 妙題

// 考慮 floyd 的過程:用乙個中轉點 k 更新所有的節點的距離

// 這個中轉點,一般是直接列舉的,考慮其意義,能作為中轉點的點,就是與當前位置聯通的點

// 恰好和題中的道路建成對應

// 於是這題可以用 floyed 做

# include # include # include # define maxn 205

int dis[maxn][maxn], n;

int vi[maxn];

void floyed(int k)

} }}int main()

for(int i = 1, u, v, w; i <= m; i++)

int curvil = 0;

scanf("%d", &q);

while(q--)

if(dis[x][y] == 0x3f3f3f3f || vi[x] > t || vi[y] > t)

else

} return 0;

}

災後重建 洛谷1119 最短路

b地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從0到n 1,和所有m條公路的長度,公路是雙向的。並給...

洛谷P1119 災後重建(最短路)

b地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從0到n 1,和所有m條公路的長度,公路是雙向的。並給...

洛谷P1119 災後重建(最短路)

b地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從0到n 1,和所有m條公路的長度,公路是雙向的。並給...