luogu P1119 災後重建

2022-05-16 11:14:37 字數 695 閱讀 8811

接近弗洛伊德板子,唯一的不同點是對每組 i j k 特判一下在給定時間內三點間的道路是否修建完成。

而且由於給出的t都單調不減,那麼顯然在詢問較大的t時,比其更小的t時的狀態已經維護過一遍,因此可以記錄維護時間的最大值。每次詢問時用while(sign

複雜度為o(n^3)

//

luogu-judger-enable-o2

#include#include

#include

#define maxn 210

#define inf 35481215

using

namespace

std;

intmp[maxn][maxn];

int que[maxn],n,m,q,k=0

;void floyd(int x,int y,int

t)

if(mp[x][y]==0x3f3f3f3f||que[x]>t||que[y]>t) printf("

-1\n");

else printf("

%d\n

",mp[x][y]);

}int

main()

scanf("%d

",&q);

for(int i=1,x,y,t;i<=q;i++)

return0;

}

luogu p1119 災後重建

luogu p1119 災後重建 少用memset 不然吃虧在後邊。在floyd在如果有些點不能走,等價於它們不能作中轉點,這樣就滿足了時效性,也就滿足了在變化的圖中求任意兩點的最短路 1 include2 include3 include4 include5 include6 include7 i...

P1119 災後重建

原題鏈結 一開始直接想跑最短路 看了看詢問次數 放棄了 然後果斷看了題解 floyd 用啥都不會用它的好嗎 平常的最劣選擇 但是 它就是正解 floyd的原理 就是列舉中點 這裡 因為出題人 已經把詢問排好了序 只需要判斷中點 有沒有重建完成 把它加入圖中 include include inclu...

洛古1119 災後重建

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