求助
查看原帖
求助
783810
furina_yyds楼主2024/10/22 17:29
#include<bits/stdc++.h>
using namespace std;
vector<int>g[200005];
const int MOD = 1e4 + 7;
int n, ans1 = 0, ans2 = 0, w[200005];
int main(){
//	freopen("P1351_2.in", "r", stdin);
//	freopen("P1351_2.zhujiaqi", "w", stdout);
	scanf("%d", &n);
	for(int i = 1; i <= n - 1; i++){
		int u, v;
		scanf("%d%d", &u, &v);
		g[u].push_back(v);
		g[v].push_back(u);
	}
	for(int i = 1; i <= n; i++){
		scanf("%d", &w[i]);
		w[i] %= MOD;
	}
	for(int i = 1; i <= n; i++){
		if(g[i].size() == 2){
			ans1 = max(ans1, w[g[i][0]] * w[g[i][1]]);
			ans2 += w[g[i][0]] * w[g[i][1]] % MOD;
			ans2 %= MOD;
		}
		if(g[i].size() == 3){
			ans1 = max({ans1, w[g[i][0]] * w[g[i][1]], w[g[i][1]] * w[g[i][2]], w[g[i][0]] * w[g[i][2]]});
			ans2 += w[g[i][0]] * w[g[i][1]] % MOD;
			ans2 %= MOD;
			ans2 += w[g[i][2]] * w[g[i][1]] % MOD;
			ans2 %= MOD;
			ans2 += w[g[i][0]] * w[g[i][2]] % MOD;
			ans2 %= MOD;
		}
	}
	printf("%d %d", ans1, ans2 * 2 % MOD);
	return 0;
}

2024/10/22 17:29
加载中...