Luogu P1351 聯合權值

2021-08-19 03:48:41 字數 1019 閱讀 5124

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

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

這題仔細想想其實很簡單,

我們設

sum[i]表示點i所連的所有點的權值和

cmax[i]表示點i所連的點權值最大的點的位置

dmax[i]表示點i所連帶點權值次大大點點位置

我們對所有的邊建乙個鄰接表即可o(n)的去處理出這些東東

然後我們就可以直接列舉乙個點以及與它相鄰的點即可..

因為是用領接表,時間複雜度為o(n)

#include

#define n 200005

using namespace std;

int cnt,n,dmax[n],cmax[n],next[2

*n],to[2

*n],ls[n];

long long sum[n],w[n];

void add(int u,int v)

int main()

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

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

for (int j=ls[i]; j; j=next[j])

else

if (w[to[j]]>w[dmax[i]]) dmax[i]=to[j];

}long long maxans=0,ans=0;

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

for (int j=ls[i]; j; j=next[j])

printf("%lld ",maxans);

printf("%lld\n",ans);

return

0;}

Luogu P1351 聯合權值

無向連通圖 gg 有 nn 個點,n 1n 1 條邊。點從 11 到 nn 依次編號,編號為 ii 的點的權值為 w iwi 每條邊的長度均為 11。圖上兩點 u,v u,v 的距離定義為 uu 點到 vv 點的最短距離。對於圖 gg 上的點對 u,v u,v 若它們的距離為 22,則它們之間會產生...

luoguP1351 聯合權值

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

Luogu P1351 聯合權值 字首和

求樹上距離為二的點對權積之最值 和。70pts 列舉每個點,bfs兩層求和求最值和和。100pts 列舉每個點,先統計所有可達節點的權值和,再列舉可達點求權值和 第二種做法較第一種的優化 a1 a2 a1 a3 a1 a4 a2 a1 a2 a3 a1 sum a1 a2 sum a2 好巧妙啊 要...