| 比赛 |
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;
}