NOIP 2013 貨車運輸

2022-05-08 19:48:06 字數 1182 閱讀 3621

題目傳送門

因為要求最長集合線段中的最小值所以果斷使用最大生成樹,因為給定的是張圖,無法確定唯一路徑,而在樹上就是了

再去求相當於兩點分別為端點的鏈上最小值

以前寫過樹上路徑,詳情(t1)

所以這時就成了一道板子題了

注意:這或許不僅僅只有一棵樹,遍歷找沒有訪問過的點重新當根即可。

#include#include

#include

#include

#include

using

namespace

std;

inline

intread()

while(c>='

0'&&c<='9')

return ans*f;

}int f[10001

],n,m;

struct

nodex[

50001

];int head[10001

],cnt;

void add(int u,int v,int

w)struct

node1s[

50001

];int

sry;

bool

cmp(node1 x1,node1 x2)

int find(int

x)int fa[10001][21

];int minn[10001][21],deep[10001

];void dfs(int f,int

fath)

for(int i=head[f];i!=-1;i=x[i].nex)

}int

q;int lca(int u,int

v)

if(u==v) return

ans;

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

ans=min(ans,minn[u][0]),u=fa[u][0

]; ans=min(ans,minn[v][0]),v=fa[v][0

];

return

ans;

}int

main()

}for(int i=1;i<=n;i++)

q=read();

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

}

noip2013貨車運輸

貨車運輸 truck.cpp c pas 問題描述 a 國有n座城市,編號從1到n,城市之間有 m條雙向道路。每一條道路對車輛都有重 量限制,簡稱限重。現在有 q輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的 情況下,最多能運多重的貨物。輸入 輸入檔名為truck.in。輸入檔案第一行有兩個...

NOIP 2013 貨車運輸

題目描述 description a 國有 n 座城市,編號從 1 到 n,城市之間有 m 條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有 q輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。輸入描述 input description 第一行有兩個用乙個...

NOIP 2013 貨車運輸

題目大意 給定一張無向圖 以及若干個詢問 對於每個詢問求所有由節點u到節點v的路徑上邊權的最小值的最大值。題解 首先用構造一棵最大生成樹,這樣保證樹上兩個節點路徑邊權的最小值最大 在最大生成樹上兩個節點之間只有一條路徑,所以只需要找路徑上邊權的最小值 為了快速的尋找最小值,利用樹上倍增的想法用f j...