比赛 2026.4.11 评测结果 EEEETTTEETE
题目名称 rldcot 最终得分 0
用户昵称 汐汐很希希 运行时间 5.408 s
代码语言 C++ 内存使用 22.44 MiB
提交时间 2026-04-11 11:46:44
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const int N=1e5+10;
const int M=5e5+10;
vector<int> g[N];
vector<int> e[N];
ll s[N],depth[N],up[N][20];
bool vis[N];
int n,m;
void dfs(int u,int w)
{
    s[u]=w;
    vis[u]=1;
    for(int i=0;i<g[u].size();i++){
        int v=g[u][i],w1=e[u][i];
        if(vis[v]==0){
            vis[v]=1;
            dfs(v,w+w1);
        }
    }
    return;
}
void dfs1(int u,int p){
    up[u][0]=p;
    for(int i=1;i<20;i++) up[u][i]=up[up[u][i-1]][i-1];
    for(int i=0;i<g[u].size();i++){
        int v=g[u][i];
        if(v==p) continue;
        depth[v]=depth[u]+1;
        dfs1(v,u);
    }
}
int lca(int v,int u){
    if(depth[u]<depth[v]) swap(u,v);
    int dif=depth[u]-depth[v];
    for(int i=0;i<20;i++)
    {
        if(dif&(1<<i)) u=up[u][i];
    }
    if(u==v) return u;
    for(int i=19;i>=0;i--){
        if(up[u][i]!=up[v][i])
        {
            u=up[u][i];
            v=up[v][i];
        }
    }
    return up[u][0];
}
int main()
{
    freopen("rldcot.in","r",stdin);
    freopen("rldcot.out","w",stdout);
    
    cin>>n>>m;
    for(int i=1;i<n;i++){
        int u,v,d;
        cin>>u>>v>>d;
        g[u].push_back(v);
        e[u].push_back(d);
        g[v].push_back(u);
        e[v].push_back(d);
    }
    dfs(1,0);
    depth[1]=0;
    dfs1(1,1); 
    while(m--){
        memset(vis,0,sizeof(vis));
        int l,r,ans=0;
        cin>>l>>r;
        for(int i=l;i<=r;i++){
            for(int j=i+1;j<=r;j++){
                if(i!=j){
                    int t=lca(i,j);
                    ll t1=s[t];
                    if(vis[t1]==0){
                        vis[t1]=1;
                        ans++;
                    }
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}