【題解】
每個點維護各個兒子的前字尾最大值、權值和,這樣就可以統計兒子之間相乘的答案。然後每個節點再乘它的祖父的權值去更新答案即可。
1 #include2 #include3 #include4#define ll long long
5#define rg register
6#define n 200010
7#define mod (10007)
8using
namespace
std;
9int
n,tot,last[n],fa[n],w[n],son[n];
10ll sum,mx;
11struct edgee[n<<1
];12 inline int
read()
18void dfs(int
x)26 premx=-2e9;
27for(rg int i=top,to;i;i--)
31for(rg int i=last[x],to;i;i=e[i].pre)if((to=e[i].to)!=fa[x]) dfs(to);32}
33int
main(); last[v]=tot;
38 e[++tot]=(edge); last[u]=tot;39}
40for(rg int i=1;i<=n;i++) w[i]=read();
41 dfs(1
);42 printf("
%lld %lld\n
",mx,sum%mod);
43 }
洛谷 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,則它們之間會產生...