社区讨论

求助,为什么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 条回复,欢迎继续交流。

正在加载回复...