noip2014 day1 2 聯合權值

2021-07-15 15:36:34 字數 2047 閱讀 4716

描述

無向連通圖 g 有 n 個點,n-1 條邊。點從 1 到 n 依次編號,編號為 i 的點的權值為 wi

, 每條邊的長度均為 1。圖上兩點(u, v)的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對(u, v),若它們的距離為 2,則它們之間會產生wu

×wv 的聯合權值。

請問圖 g 上所有可產生聯合權值的有序點對中,聯合權值最大的是多少?所有聯合權值之和是多少?

輸入格式

第一行包含 1 個整數 n。

接下來 n-1 行,每行包含 2 個用空格隔開的正整數 u、v,表示編號為 u 和編號為 v 的點 之間有邊相連。

最後 1 行,包含 n 個正整數,每兩個正整數之間用乙個空格隔開,其中第 i 個整數表示 圖 g 上編號為 i 的點的權值為wi

。輸出格式

輸出共 1 行,包含 2 個整數,之間用乙個空格隔開,依次為圖 g 上聯合權值的最大值 和所有聯合權值之和。由於所有聯合權值之和可能很大,輸出它時要對10007取餘。

input

5 1 2

2 3

3 4

4 5

1 5 2 3 10

output

20 74

限制 對於 30%的資料,1 < n ≤ 100;

對於 60%的資料,1 < n ≤ 2000;

對於 100%的資料,1 < n ≤ 200,000,0 < wi

≤ 10,000。

本例輸入的圖如上所示,距離為 2 的有序點對有(1,3)、(2,4)、(3,1)、(3,5)、(4,2)、(5,3)。 其聯合權值分別為 2、15、2、20、15、20。其中最大的是 20,總和為 74。

距離為2的點對只有兩種情況:

1.一條鏈上,深度差為2的點對。

2.某點x有多個子節點,每對子節點皆為距離為2的點對。

情況1很好求,只要和它父親的父親乘一下就可以。

情況2的話,要求max,那麼肯定是最大的兩個,要求和的話,比如有4個兒子,就是a1

∗a2+

a1∗a

3+a1

∗a4+

a2∗a

3+a2

∗a4+

a3∗a

4 ,整理式子得a1

(a2+

a3+a

4)+a

2(a3

+a4)

+a3(

a4) ,怎麼求這個式子就不必贅述了。

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int mod=10007;

int n,x,y,tot,max;

int a[200005],f[200005],fa[200005],son[200005];

int head[200005],next[400005],to[400005];

void add(int x,int y)

void dfs(int k,int pre)

}void dp(int k,int deep,int pre) //樹形搜尋

if(son[k]==0) return;

if(son[k]==1)

}else

else

if(a[to[i]]>max2) max2=a[to[i]];

s=s+a[to[i]];

}max=max(max,max1*max2); //求兩個最大值

for(int i=head[k];i!=-1;i=next[i])

if(to[i]!=pre)

}}int main()

for(int i=1;i<=n;i++) scanf("%d",&a[i]);

dfs(1,0);

dp(1,1,0);

cout

<

0;}

NOIP2014day1 聯合權值

首先這是棵樹,那麼任意兩點間就只有一條路徑。要想值為2,那麼就需要兩個點連到同乙個點,即與同乙個點直接相連 那麼我們就可以列舉中間的點,然後遍歷它所有與其相連的點。另外總和權值可以這麼算 假如有兩個點 2ab a b 2 a2 b2 2ab a b 2 a 2 b 2 2ab a b 2 a2 b2...

NOIP2014day1之聯合權值

noip2014day1有個題目叫聯合權值 題目描述 無向連通圖 g 有 n 個點,n 1 條邊。點從 1 到 n 依次編號,編號為 i 的點的權值為wi 每條邊的長度均為 1。圖上兩點 u,v 的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對 u,v 若它們的距離為 2,則它們之間會...

NOIP2014 Day1 T2 聯合權值

noip2014 day1 t2 聯合權值 time limit 10000ms memory limit 131072k total submit 57 accepted 30 case time limit 1000ms description input output sample input...