求助,为什么RE?

回复帖子

@破壁人四号 2019-02-18 14:57 回复
#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;
}
/*

*/
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。