dfs做的,为什么会全部RE呢(不考虑TLE)
查看原帖
dfs做的,为什么会全部RE呢(不考虑TLE)
312121
shimao楼主2021/10/8 22:55
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<vector>
#include<algorithm>
using namespace std;
#define ll long long
#define mod 10007
#define DB double
ll w[200000];
vector<ll> G[200000];
ll n;
ll mx;
ll sum;
inline void dfs(ll fir,ll x,ll fa,ll dep)
{
    if(dep==2)
    {
        sum+=(w[fir]%mod)*(w[x]%mod)%mod;
        sum%=mod;
        mx=max(mx,w[fir]*w[x]);
        return;
    }
    for(ll i=0;i<G[x].size();i++)
    {
        ll go=G[x][i];
        if(go!=fa)
            dfs(fir,go,x,dep+1);
    }
}
int main()
{
	cin>>n;
    ll x,y;
    for(ll i=1;i<n;i++)
    {
        scanf("%d %d",&x,&y);
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for(ll i=1;i<=n;i++)
        scanf("%d",&w[i]);
    for(ll i=1;i<=n;i++)
        dfs(i,i,0,0);
    cout<<mx<<" "<<sum;
    return 0;
}
2021/10/8 22:55
加载中...