顯然是一顆樹。
對於x節點,答案只有兩種情況。
一是「x的父親和x的兒子」,這個可以直接在dfs的時候多維護一祖父的資訊即可。
二是「x的兒子們」。
第一問:顯然是前兩大的數。
第二問:ans
=sum
∗sum
−t+w
[x]∗
w[fa
fa]∗
2(無向
圖)t=
∑i=1
nw[i
]∗w[
i]
ans=sum*sum-t+w[x]*w[fafa]*2(無向圖) \\ t=\sum_^ w[i]*w[i]
ans=su
m∗su
m−t+
w[x]
∗w[f
afa]
∗2(無
向圖)t
=i=1
∑nw
[i]∗
w[i]
#include
#include
#define rep(i,x,y) for (register int i=x;i<=y;i++)
using
namespace std;
const
int mod=
10007
;struct nodea[
400005];
int n,w[
200001
],ans1,ans2,tot,head[
200001];
void
add(
int x,
int y)
;head[x]
=tot;
}void
dfs(
int d,
int f,
int ff)
} ans1=
max(ans1,
max(q*e,w[d]
*w[ff]))
; ans2=
(ans2+
(b*b%mod-c+mod)
%mod+w[d]
*w[ff]*2
%mod)
%mod;
}int
main()
洛谷 1351 聯合權值
一棵樹上距離為2的兩個節點的權值相乘,問max和sum70分 列舉每個節點,它的兩個兒子必定距離為2,相加 取max即可 會t 100分 注意到,乙個節點的兒子中,互相都要乘 根據乘法分配律,我先預處理它兒子的權值和,每個節點x對聯合權值的貢獻為key x sum key x 這樣可以把o n3 的...
洛谷 1351 聯合權值
題目描述 無向連通圖 g 有 n 個點,n 1 條邊。點從 1 到 n 依次編號,編號為 iii 的點的權值為 wi,每條邊的長度均為 1。圖上兩點 u,v 的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對 u,v 若它們的距離為 2,則它們之間會產生wv wu 的聯合權值。請問圖 g...
洛谷 1351 聯合權值
無向連通圖 gg 有 nn 個點,n 1n 1 條邊。點從 11 到 nn 依次編號,編號為 ii 的點的權值為 w iwi 每條邊的長度均為 11。圖上兩點 u,v u,v 的距離定義為 uu 點到 vv 點的最短距離。對於圖 gg 上的點對 u,v u,v 若它們的距離為 22,則它們之間會產生...