比赛 2026.5.16 评测结果 WTTTTTTTTT
题目名称 填树 最终得分 0
用户昵称 郑霁桓 运行时间 18.908 s
代码语言 C++ 内存使用 3.44 MiB
提交时间 2026-05-16 11:46:13
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,k,l[205],r[205],xx,yy,as,ss;
vector<int>v[205];
inline void dfs(int x,int mn,int mx,int fa,int s){
    if(mx-mn>k) return;
    as++,ss+=s;
    for(int i=0;i<v[x].size();i++){
        if(v[x][i]==fa) continue;
        for(int j=l[v[x][i]];j<=r[v[x][i]];j++){
            dfs(v[x][i],min(j,mn),max(j,mx),x,s+j);
        }
    }
    return;
}
int main(){
    freopen("tree.in","r",stdin);
    freopen("tree.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>l[i]>>r[i];
    for(int i=1;i<n;i++){
        cin>>xx>>yy;
        v[xx].push_back(yy);
        v[yy].push_back(xx);
    }
    for(int i=1;i<=n;i++){
        for(int j=l[i];j<=r[i];j++){
            cout<<"\n\n";
            dfs(i,j,j,0,j);
        }
    }
    cout<<as<<"\n"<<ss;
    return 0;
}