NOIP2014 聯合權值

2022-08-16 15:12:12 字數 2032 閱讀 7117

無向連通圖g 有n 個點,n - 1 條邊。點從1 到n 依次編號,編號為 i 的點的權值為w i ,每條邊的長度均為1 。圖上兩點( u , v ) 的距離定義為u 點到v 點的最短距離。對於圖g 上的點對( u, v) ,若它們的距離為2 ,則它們之間會產生wu×wv 的聯合權值。

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

輸入格式:

輸入檔名為link .in。

第一行包含1 個整數n 。

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

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

輸出格式:

輸出檔名為link .out 。

輸出共1 行,包含2 個整數,之間用乙個空格隔開,依次為圖g 上聯合權值的最大值

和所有聯合權值之和。由於所有聯合權值之和可能很大,輸出它時要對10007 取餘。

輸入樣例#1:

5  

1 2

2 33 4

4 5

1 5 2 3 10

輸出樣例#1:

20 74

本例輸入的圖如上所示,距離為2 的有序點對有( 1,3) 、( 2,4) 、( 3,1) 、( 3,5) 、( 4,2) 、( 5,3) 。

其聯合權值分別為2 、15、2 、20、15、20。其中最大的是20,總和為74。

【資料說明】

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

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

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

題解:bfs,以每個點為中心,它兒子的距離都為2

求最大值只需找前兩大的w,求和可以用sum=(a1+a2+a3+......+an)^2-a1^2-a2^2-......-an^2

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define rg register

9#define ll long long

10using

namespace

std;

1112

const

int maxn = 200010;13

const

int maxm = 200010;14

const

int mod = 10007;15

1617

intn,ans1,ans2;

18int nxt[maxm*2],to[maxm*2

],h[maxn],e_num,w[maxn];

19bool

vis[maxn];

2021 queueq;

2223

void add(int x, int y)

2425

void

bfs()

37 sum=sum*sum;

38for(int i=h[u]; i; i=nxt[i])

42 sum%=mod;

43 ans1=max(ans1,mx1*mx2),ans2+=sum,ans2%=mod;44}

45}4647

intmain()

54for(int i=1; i<=n; i++) scanf("

%d", &w[i]);

55bfs();

56 ans2%=mod;

57 printf("

%d %d

", ans1, ans2);

58return0;

59 }

NOIP2014 聯合權值

鄰接表儲存樹。列舉每個節點,使之作為中點,先計算出與其相連的所有節點的權值總和l,與其相連的所有節點在該節點處形成的權值 l w w。如果沒有l,直接列舉以此節點為中點的節點對則只能過60 的資料。include include include include include include inc...

NOIP 2014 聯合權值

評測傳送 70分 列舉中間點,然後再兩層迴圈列舉這個點的所有鄰接點,兩兩相乘,加入和中。可能退化為n 2 100分 在70分的基礎上加乙個優化,當我們列舉了中間點,然後再列舉它的鄰接點 j 時,用sum i 表示 i 的所有鄰接點的權值的和,那麼以 i 作為中間點,j這個點對答案的貢獻為 sum i...

(noip2014)聯合權值

題目傳送門sxazr 本題可直接列舉每個點,然後列舉與它相連的兩個點,這兩個點的乘積便是乙個聯合權值 可以記錄下每個點與它相連的點的最大值和次大值,結果就是取最大值和次大值乘積的最大 求和的話,可以記錄下乙個點相連所有點的和s i sum w j s i w j j是與i相連的點 列舉每個點的sum...