codevs1519 過路費 最小生成樹 LCA

2022-04-06 02:31:43 字數 2177 閱讀 3549

時間限制: 1 s

空間限制: 256000 kb

題目等級 : 大師 master

在某個遙遠的國家裡,有 n個城市。編號為 1,2,3,…,n。這個國家的**修建了m 條雙向道路,每條道路連線著兩個城市。**規定從城市 s 到城市t需要收取的過路費為所經過城市之間道路長度的最大值。如:a到b長度為 2,b到c 長度為3,那麼開車從 a經過 b到c 需要上交的過路費為 3。

佳佳是個做生意的人,需要經常開車從任意乙個城市到另外乙個城市,因此他需要頻繁地上交過路費,由於忙於做生意,所以他無時間來尋找交過路費最低的行駛路線。然而, 當他交的過路費越多他的心情就變得越糟糕。 作為秘書的你,需要每次根據老闆的起止城市,提供給他從開始城市到達目的城市,最少需要上交多少過路費。

輸入描述 input description

第一行是兩個整數 n 和m,分別表示城市的個數以及道路的條數。 

接下來 m 行,每行包含三個整數 a,b,w(1≤a,b≤n,0≤w≤10^9),表示a與b之間有一條長度為 w的道路。

接著有一行為乙個整數 q,表示佳佳發出的詢問個數。 

再接下來 q行,每一行包含兩個整數 s,t(1≤s,t≤n,s≠t), 表示開始城市s 和目的城市t。

輸出描述 output description

輸出共q行,每行乙個整數,分別表示每個詢問需要上交的最少過路費用。輸入資料保證所有的城市都是連通的。

樣例輸入 sample input

4 5 

1 2 10 

1 3 20 

1 4 100 

2 4 30 

3 4 10 

2 1 4 

4 1樣例輸出 sample output

20 20

資料範圍及提示 data size & hint

對於 30%的資料,滿足 1≤ n≤1000,1≤m≤10000,1≤q≤100; 

對於 50%的資料,滿足 1≤ n≤10000,1≤m≤10000,1≤q≤10000; 

對於 100%的資料,滿足 1≤ n≤10000,1≤m≤100000,1≤q≤10000;

#include#include

#include

#include

#define n 10007

#define m 100007

using

namespace

std;

int head[n],f[n][22],g[n][22

],fa[n],deep[n];

intn,m,ans,cnt,t,x,y;

struct

edge

e[m];

struct

node

}p[m];

inline

void add(int u,int to,int

dis)

inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}void dfs(int now,int

from,int c,int

wa)}

inline

void

get_fa()

}int lca(int a,int

b) }

if(a==b) return

ret;

for(int i=20;i>=0;i--)

}ret=max(ret,max(g[a][0],g[b][0

]));

return

ret;

}inline

int find(int

x)int

main()

sort(p+1,p+m+1);int tot=0

;

for(int i=1;i<=n;i++) fa[i]=i;

for(int i=1;i<=m;i++)

if(tot==n-1) break

; }

t=read();

dfs(

1,0,0,0

);get_fa();

for(int i=1;i<=t;i++)

return0;

return0;

return0;

}

習題 codevs 1519 過路費 解題報告

今天拿了這道題目練練手,感覺自己 能力又增強了不少 我的思路跟別人可能不一樣。首先我們很容易就能看出,我們需要的邊就是最小生成樹演算法kruskal演算法求出來的邊,其餘的邊都可以刪掉,於是就有了這個kruskal選邊建圖的過程。1 struct kruskalsolvekr maxm 此處省略的內...

習題 codevs 1519 過路費 解題報告

今天拿了這道題目練練手,感覺自己 能力又增強了不少 我的思路跟別人可能不一樣。首先我們很容易就能看出,我們需要的邊就是最小生成樹演算法kruskal演算法求出來的邊,其餘的邊都可以刪掉,於是就有了這個kruskal選邊建圖的過程。1 struct kruskalsolvekr maxm 此處省略的內...

過路費 (最短路)

問題描述 有一天你來到了乙個奇怪的國家,它有 n 個城市,城市之間有若干條雙向道路連線,每條道路都有一定的費用,經過城市也要一定的費用。從乙個城市到達另乙個城市的總花費為路徑上費用最大的城市費用 包括起點和終點 加上路徑上所有的道路的費用。給出 q 次詢問,分別回答每次詢問中兩城市間的最少花費。保證...