求樹上距離為二的點對權積之最值、和。
70pts:列舉每個點,bfs兩層求和求最值和和。
100pts:列舉每個點,先統計所有可達節點的權值和,再列舉可達點求權值和
第二種做法較第一種的優化:
a1*a2+a1*a3+a1*a4+..a2*a1+a2*a3+...
=>a1*(sum-a1)+a2*(sum-a2)+...
好巧妙啊
要注意的一點:小心過程量爆int!
1 #include2 #include3 #include4 #include5 #include6using
namespace
std;78
intread()
1415
const
int maxn = 2e6+10;16
17struct
edgeedges[maxn<<1
];20
21int
first[maxn];
22int
w[maxn];
23int
n,m,ans,tot,top,cnte,x;
2425
void add_edge(int fr,int
to);
27 first[fr] =cnte;28}
2930
intmain()
40for(int i = 1;i <= n;i++)w[i] =read();
41for(int i = 1;i <= n;i++)
50 ans = max(ans,m1*m2);
51for(int j = first[i];j;j =edges[j].ne)
52 x = w[edges[j].to],tot = (tot+x*(s-x))%10007;53
}54 cout << ans << '
'<55return0;
56 }
Luogu P1351 聯合權值
無向連通圖g有n個點,n 1條邊,點從1到n依次編號,編號為i的點的權值為wi每條邊的長度均為1圖上兩點 u,v 的距離定義為u點到v點的最短距離。對於圖g上的點對 u,v 若它們的距離為2,則它們之間會產生wu wv 的聯合權值。請問圖g 上所有可產生聯合權值的有序點對中,聯合權值最大的是多少?所...
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 上所有可產生聯合權值的...