比赛 2026.4.11 评测结果 ATTTTTTTTTW
题目名称 rldcot 最终得分 9
用户昵称 郑霁桓 运行时间 8.156 s
代码语言 C++ 内存使用 23.73 MiB
提交时间 2026-04-11 11:16:21
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,xx,yy,zz,d[500005],l,r,fa[20][500005],dep[500005],as;
struct eg{
    int to,vl;
};
vector<eg>v[500005];
map<int,int>mp;
void dfs(int x){
    dep[x]=dep[fa[0][x]]+1;
    for(int i=0;i<v[x].size();i++){
        if(v[x][i].to==fa[0][x]) continue;
        d[v[x][i].to]=d[x]+v[x][i].vl;
        fa[0][v[x][i].to]=x;
        dfs(v[x][i].to);
    }
    return;
}
inline int lca(int x,int y){
    if(dep[x]<dep[y]) swap(x,y);
    for(int i=19;i>=0;i--){
        if(dep[fa[i][x]]>=dep[y]) x=fa[i][x];
    }
    if(x==y) return x;
    for(int i=19;i>=0;i--){
        if(fa[i][x]!=fa[i][y]) x=fa[i][x],y=fa[i][y];
    }
    return fa[0][x];
}
int main(){
    freopen("rldcot.in","r",stdin);
    freopen("rldcot.out","w",stdout); 
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1;i<n;i++){
        cin>>xx>>yy>>zz;
        v[xx].push_back({yy,zz});
        v[yy].push_back({xx,zz}); 
    }
    dfs(1);
    for(int i=1;i<=19;i++){
        for(int j=1;j<=n;j++){
            fa[i][j]=fa[i-1][fa[i-1][j]];
        }
    }
    while(m--){
        cin>>l>>r,as=0;
        mp.clear();
        for(int i=l;i<=r;i++){
            for(int j=i;j<=r;j++){
                int dd=d[lca(i,j)];
                if(!mp[dd]) mp[dd]=1,as++;
            }
        }
        cout<<as<<"\n";
    }
    return 0;
}
//2n