社区讨论
求助,为什么RE?
P1351[NOIP 2014 提高组] 联合权值参与者 6已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mi7w0u39
- 此快照首次捕获于
- 2025/11/21 04:32 4 个月前
- 此快照最后确认于
- 2025/11/21 04:32 4 个月前
CPP
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define mst(a,b) memset(a,b,sizeof(a))
#define For(i, k, j) for(int i = (k); i <= (j); i++)
#define INF 2147483647
using namespace std;
inline int read()
{
int num = 0; char c=' '; int flag = 1;
for(;c>'9'||c<'0';c=getchar()) if(c=='-') flag = -1;
for(;c>='0'&&c<='9';num=(num<<1)+(num<<3)+c-48,c=getchar());
return num * flag;
}
const int MAXN = 200005;
int n;
struct Edge {
int v, nxt;
}e[MAXN];
int lst[MAXN], tot = 0;
inline void addedge(int u, int v) {
e[++tot].v = v;
e[tot].nxt = lst[u];
lst[u] = tot;
}
int ansm = 0, sum = 0;
int a[MAXN], s = 0;
//vector < int > dis2[MAXN];
inline void getdis2(int u, int fa, int dis) {
if(dis == 2) {
ansm = max(ansm, a[s] * a[u]);
sum += a[s] * a[u] % 10007;
sum %= 10007;
return;
}
for(int i = lst[u]; i; i = e[i].nxt) {
if(e[i].v != fa) {
getdis2(e[i].v, u, dis+1);
}
}
}
int main()
{
int n = read();
For(i, 1, n-1) {
int u = read(), v = read();
addedge(u, v);
addedge(v, u);
}
For(i, 1, n)
a[i] = read();
For(i, 1, n) {
s = i;
getdis2(i, -1, 0);
}
cout << ansm << ' ' << sum << endl;
return 0;
}
/*
*/
回复
共 9 条回复,欢迎继续交流。
正在加载回复...