比赛 2025暑期集训第4场 评测结果 ATTTTTTTTT
题目名称 外卖 最终得分 10
用户昵称 二乾五 运行时间 26.988 s
代码语言 C++ 内存使用 3.42 MiB
提交时间 2025-07-05 11:19:36
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define cl(a) memset(a,0,sizeof a)
#define copy(a,b) copy(begin(a),end(a),begin(b))
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)
#define time shijian

ll n,m,a[505],ans;
ll ccnt,h[505],to[1005],nxt[1005];
bool zhejiadiandewaimaiyijingnaguole[505];

void cadd(ll x,ll y){
    nxt[++ccnt]=y;
    to[ccnt]=h[x];
    h[x]=ccnt;
}

void dfs(ll u,ll time,ll money){
    if(time==m){
        ans=max(ans,money);
    }else{
        if(!zhejiadiandewaimaiyijingnaguole[u]){
            zhejiadiandewaimaiyijingnaguole[u]=1;
            dfs(u,time+1,money+a[u]);
            zhejiadiandewaimaiyijingnaguole[u]=0;
        }
        for(ll i=h[u];i;i=to[i]){
            ll v=nxt[i];
            dfs(v,time+1,money);
        }
    }
}

int main(){
    #ifndef ONLINE_JUDGE
        freopen("food.in" ,"r",stdin );
        freopen("food.out","w",stdout);
    #endif
    cin>>n>>m;
    foru(i,1,n){
        cin>>a[i];
    }
    foru(i,1,n-1){
        ll u,v;
        cin>>u>>v;
        cadd(u,v);
        cadd(v,u);
    }
    dfs(1,0,0);
    cout<<ans;
    return 0;
}