首页 > 其他分享 >D. Distance in Tree

D. Distance in Tree

时间:2024-07-12 19:52:02浏览次数:15  
标签:Distance 遍历 int ll Tree dfs next now

原题链接

题解

固定一个点作为树的根,易得任意一条链,都可以以某个点作为最高点,且链的两端到最高点之和为 \(k\)
那么不难想到遍历每个点作为最高点
那么接下来就变成了在子树里选两个端点,使得到该点的距离之和为 \(k\)
这种无序点对统计,我们可以顺序遍历,然后对于每一个遍历到的点,计算之前与遍历过的点的配对

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

vector<ll> G[50005];
ll dp[50005][505]={0};
ll ans=0;
ll k;
void dfs(ll now,ll fa)
{
    dp[now][0]=1;
    for(auto next:G[now])
    {
        if(next==fa) continue;
        dfs(next,now);

        for(int i=1;i<=k;i++)
        {
            ans+=dp[now][k-i]*dp[next][i-1];
        }
        for(int i=1;i<=k;i++)
        {
            dp[now][i]+=dp[next][i-1];
        }
    }
}

void solve()
{
    ll n;
    cin>>n>>k;

    for(int i=1;i<n;i++)
    {
        ll x,y;
        cin>>x>>y;

        G[x].push_back(y);
        G[y].push_back(x);
    }

    dfs(1,1);
    cout<<ans;
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}


标签:Distance,遍历,int,ll,Tree,dfs,next,now
From: https://www.cnblogs.com/pure4knowledge/p/18299280

相关文章

  • BootStrap TreeView示例
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title></title>......
  • Rocky Linux/Redhat8运行Calibre2022报错:Software tree is for environment VCO=aoj
    运行出现了错误:virserver.tclerror:ERROR:CurrentexecutionenvironmentisVCO=aok.SoftwaretreeisforenvironmentVCO=aoj。即calibre软件版本为aoj,但当前的环境是aok。从官网查询calibre的roadmap:http://calibre.mentorcloudservices.com/docs/Calibre_OS_Roadmap.......
  • C. Tree Infection
    https://codeforces.com/problemset/problem/1665/C题目解析很显然,树的节点感染只会在兄弟节点之间,每层独立的兄弟节点都得感染至少一个,然后让他自由扩展(时间差),那么很显然第一遍就是每层都得感染。感染的次序就是按照兄弟节点的数量降序,并且要加上1的单独节点。然后如果vis-(i......
  • db B+Tree 特殊的二叉搜索树, 时间复杂度
     B+树是一种自平衡的树数据结构,常用于数据库和文件系统的实现中。它具有以下特点:多路平衡查找树:每个节点可以有多个子节点,且所有叶子节点都位于同一层,保证了树的高度相对较小,提高了查询效率。键值对存储:每个节点存储一个或多个键值对,内部节点的键用于指导搜索,而所有的......
  • [namespace hdk] Balanced_tree 整合
    代码#include<bits/stdc++.h>usingnamespacestd;namespacehdk{ namespacebalanced_tree{ constintN=2000001,inf=114514191; classsplay{ private: introot,tot; structtree{ intw; intcnt,size; intfa,son[2]; }t[N];......
  • 01 Tree
    有利用数学归纳法思想的扩展法,就有反过来的删除法,这里利用删除法考虑对于一颗合法的树,显然删除某两个叶子,会让其共同父亲变成叶子,这就形成了一个递归的过程;而某两个叶子在序列\(a\)中也一定是相邻的,而且很容易发现特征,就是其\(a\)的大小相差\(1\)但是现在的问题就是我们不知道删......
  • Caterpillar on a Tree
    首先一个很显然的地方就是使用传送门肯定是在叶子节点使用,我们来考虑一下整个过程是怎么样的为了方便,我们不妨假设可以传送回根节点\(k+1\)次,然后要求最后回到根节点我们先从根节点走到某一个叶子结点,然后再从这个叶子节点走到另一个叶子节点,然后继续走到另一个叶子节点,一直这么......
  • B-Tree的应用
    在数据库和文件系统中,B-树及其变种被广泛用于索引结构,以优化数据的存储和检索效率。当处理的数据项是很大的记录时,使用改进的B-树可以带来显著的优势。以下是这种改进B-树的关键特性和工作原理的详细解释:1.**只有叶子节点存放完整记录**在标准的B-树中,每个节点(包括非叶子节......
  • cv2中二值图轮廓与轮廓层级参数cv2.RETR_TREE
    1.二值图的轮廓在使用cv2.findContours时,黑白二值图(像素值只有0或255)的轮廓都是以白色像素作为前景,黑色像素作为背景。看下面两个图(左图与右图同样大小都是200x200,左图是四周为黑色,中间为白色,右图为四周为白色,中间为黑色)。               ......
  • el-tree懒加载获取所有已经选的节点
    用于el-tree懒加载一个图层目录,勾选父级目录,需要得到该父级目录下所有叶子节点数据<el-tree:data="directoryDataLayer"show-checkboxnode-key="id":load="directoryDataLoad"......