P1119 災後重建

2021-07-30 06:53:14 字數 881 閱讀 9405

原題鏈結

一開始直接想跑最短路

看了看詢問次數

放棄了

然後果斷看了題解

floyd

用啥都不會用它的好嗎

平常的最劣選擇

但是 它就是正解

floyd的原理

就是列舉中點

這裡 因為出題人

已經把詢問排好了序

只需要判斷中點

有沒有重建完成

把它加入圖中

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct maki

que[50005];

int dis[205][205],i,j,k,p,n,m,ti[205],x,y,t,a,b,w,vis[205],q;

int main()

scanf("%d",&q);

for(i=1;i<=q;i++)

for(p=1;p<=q;p++)

for(k=0;kif((ti[k]<=que[p].tim)&&(!vis[k]))

if(dis[x][y]>=1e6) printf("-1\n");

else

printf("%d\n",dis[x][y]);

}return

0;}

P1119 災後重建

我覺得這個題出的很好,讓我對floyd 演算法有了乙個更深的理解。floyd 是乙個求多源最短路徑的演算法,演算法的內容很簡單。這個演算法的主要思路,就是通過其他的點進行中轉來求的兩點之間的最短路。因為我們知道,兩點之間有多條路,如果換一條路可以縮短距離的話,就更新最短距離。而它最本質的思想,就是用...

P1119 災後重建

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

P1119 災後重建

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