洛谷 4047 部落劃分

2022-05-26 02:42:10 字數 1980 閱讀 6692

bb地區在**過後,所有村莊都造成了一定的損毀,而這場**卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。

給出bb地區的村莊數nn,村莊編號從00到n-1n−1,和所有mm條公路的長度,公路是雙向的。並給出第ii個村莊重建完成的時間t_iti​,你可以認為是同時開始重建並在第t_iti​天重建完成,並且在當天即可通車。若t_iti​為00則說明**未對此地區造成損壞,一開始就可以通車。之後有qq個詢問(x, y, t)(x,y,t),對於每個詢問你要回答在第tt天,從村莊xx到村莊y的最短路徑長度為多少。如果無法找到從xx村莊到yy村莊的路徑,經過若干個已重建完成的村莊,或者村莊xx或村莊yy在第t天仍未重建完成 ,則需要返回-1−1。

第一行包含兩個正整數n,mn,m,表示了村莊的數目與公路的數量。

第二行包含nn個非負整數t_0, t_1,…, t_t0​,t1​,…,tn−1​,表示了每個村莊重建完成的時間,資料保證了t_0 ≤ t_1 ≤ … ≤ t_t0​≤t1​≤…≤tn−1​。

接下來mm行,每行33個非負整數i, j, wi,j,w,ww為不超過1000010000的正整數,表示了有一條連線村莊ii與村莊jj的道路,長度為ww,保證i≠ji≠j,且對於任意一對村莊只會存在一條道路。

接下來一行也就是m+3m+3行包含乙個正整數qq,表示qq個詢問。

接下來qq行,每行33個非負整數x, y, tx,y,t,詢問在第tt天,從村莊xx到村莊yy的最短路徑長度為多少,資料保證了tt是不下降的。

共qq行,對每乙個詢問(x, y, t)(x,y,t)輸出對應的答案,即在第tt天,從村莊xx到村莊yy的最短路徑長度為多少。如果在第t天無法找到從xx村莊到yy村莊的路徑,經過若干個已重建完成的村莊,或者村莊x或村莊yy在第tt天仍未修復完成,則輸出-1−1。

輸入 #1複製

4 5

1 2 3 4

0 2 1

2 3 1

3 1 2

2 1 4

0 3 5

42 0 2

0 1 2

0 1 3

0 1 4

輸出 #1複製

-1-15

4

對於30\%30%的資料,有n≤50n≤50;

對於30\%30%的資料,有t_i= 0ti​=0,其中有20\%20%的資料有t_i = 0ti​=0且n>50n>50;

對於50\%50%的資料,有q≤100q≤100;

對於100\%100%的資料,有n≤200n≤200,m≤n \times (n-1)/2m≤n×(n−1)/2,q≤50000q≤50000,所有輸入資料涉及整數均不超過100000100000。

題解:不斷合併最小的邊,這樣就最近的就會變大     

//

luogu-judger-enable-o2

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

double

db;const

int n=1005

;struct

nodee[

1002019

];int

n,m,x[n],y[n],cp,fa[n];

db a[n];

int find(int

x) db how_long(

int uu,int

vv)void add_ycll(int aa,int

bb)bool

cmp(node aa,node bb)

intmain()

} //printf("%.2lf",a[n-m+1]);

return0;

}

洛谷 P4047 JSOI2010 部落劃分

這道題其實就是無線通訊網的雙倍經驗啦,只是在輸出的時候不同罷了。還是一樣的 kruskal 演算法,但是在求的時候,應該在 now n k 1 的時候結束。本來到 n k 就行了的,但是由於 n k 1 這條邊是在應該部落裡面的,不能算,所以要找到第乙個不在乙個部落裡面的邊。include usin...

P4047 JSOI2010 部落劃分

聰聰研究發現,荒島野人總是過著群居的生活,但是,並不是整個荒島上的所有野人都屬於同乙個部落,野人們總是拉幫結派形成屬於自己的部落,不同的部落之間則經常發生爭鬥。只是,這一切都成為謎團了 聰聰根本就不知道部落究竟是如何分布的。不過好訊息是,聰聰得到了乙份荒島的地圖。地圖上標註了n個野人居住的地點 可以...

P4047 JSOI2010 部落劃分題解

題意 給定一些點,要把這些點分為k個部落,問最近兩個部落間的最遠距離是多少。解法 二分答案 並查集檢測鴨!二分的時候要注意精度問題噢,eps開到1e 3會有乙個點過不去。開始看錯題意想半天。include include include include include include include...