首页 > 其他分享 >Codeforces Round 881 (Div. 3) D - Apple Tree(dfs)

Codeforces Round 881 (Div. 3) D - Apple Tree(dfs)

时间:2023-07-15 11:02:24浏览次数:37  
标签:结点 Apple idx LL Tree 881 dfs cin cnt

https://codeforces.com/contest/1843/problem/D

题目大意:

一颗树中,每次给定两个结点,每个结点都可以移动到孩子结点,最后可以到达叶子结点,

问我们这两个结点最终移到叶子结点有多少种组合?

(其实就是让求以这两个节点为根的子树的叶子结点个数的乘积)
input 
2
5
1 2
3 4
5 3
3 2
4
3 4
5 1
4 4
1 3
3
1 2
1 3
3
1 1
2 3
3 1
output 
2
2
1
4
4
1
2


input
2
5
5 1
1 2
2 3
4 3
2
5 5
5 1
5
3 2
5 3
2 1
4 2
3
4 3
2 1
4 2
output
1
2
1
4
2
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2023;
vector<LL> g[N];
LL cnt[N],maxn=0;
void dfs(LL idx,LL father)
{
    if(g[idx].size()==1&&g[idx][0]==father) cnt[idx]=1;
    else
    {
        for(int i=0;i<g[idx].size();i++)
        {
            if(g[idx][i]!=father)
            {
                dfs(g[idx][i],idx);
                cnt[idx]+=cnt[g[idx][i]];
            }
        }
    }
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        memset(cnt,0,sizeof cnt);
        for(int i=0;i<=n;i++)
        {
            g[i].clear();
        }
        maxn=0;
        for(int i=1;i<n;i++)
        {
            LL u,v;
            cin>>u>>v;
            g[u].push_back(v);
            g[v].push_back(u);
        }
        dfs(1,-1);
        LL q;
        cin>>q;
        while(q--)
        {
            LL u,v;
            cin>>u>>v;
            cout<<cnt[u]*cnt[v]<<endl;
        }
    }
    return 0;
}

标签:结点,Apple,idx,LL,Tree,881,dfs,cin,cnt
From: https://www.cnblogs.com/Vivian-0918/p/17555781.html

相关文章

  • WPF TreeView 检测SelectedItem变化的简单方案
    TreeView无法绑定SelectedItem,而又想知道treeview的selecteditem的变化,当然目前有很多方法,我这里简单的提供一个。目前主要思路就是通过处理xaml的TreeViewItem的IsSelected属性来进行绑定。<TreeViewBorderThickness="0"Width="220"......
  • Codeforces 1740H - MEX Tree Manipulation
    首先发现一个性质,那就是每个点的点权是\(\logn\)级别的。因为假设要造出一个点权为\(i\)的点至少需要大小为\(mn_i\)的子树,那么显然有\(mn_i=\sum\limits_{j=0}^{i-1}mn_j+1\),即\(mn_i=2^i\)。由于点权不是很大,因此我们很容易地往变换复合的角度思考。将整棵树进行轻重......
  • CF1290E Cartesian Tree 注意点--zhengjun
    解题思路容易想到从小到大加数,维护每个点的子树大小。可转化为维护每个点为\(\max\)时的\([L,R]\)区间。然后需要写一个支持【区间+1】、【区间取min】、单点加入、全局查询。上个吉司机线段树即可。注意点吉司机线段树下推\(fi\)的标记的时候要注意\(fi\)的变化......
  • SegmentTree2
    线段树完全版关键词:延迟加载、懒标记LazyTag单点更新的情况比较简单。请看线段树基础版下面说说区间更新的情况。场景是这样的,还是刚刚的数,求区间的和。准备工作//rt:root#definelsonrt<<1#definersonrt<<1|1#definelen(r-l+1)//(l,r)区间的长度这次是区间更新......
  • 【DP】DMOPC '21 Contest 8 P5 - Tree Building
    ProblemLink给定\(n,m\)和一个长为\(m\)的代价序列,对于一棵\(n\)个节点,每个节点度数不超过\(m\)的树,定义它的代价为\(\sum\limits_{i=1}^na_{deg_i}\)。求代价最小的树的代价。\(n\le10^9,m\le3000,1\lea_i\le10^9\)。首先一眼变成选出\(n\)个\(a\)的和为......
  • CF1846D Rudolph and Christmas Tree 题解
    Decription一颗圣诞树由\(n\)个底边为\(d\),高度为\(h\)的等腰三角形组成,每个三角形以\(y\)轴为对称轴,底边均平行于\(x\)轴,三角形有可能重叠。给出\(n,d,h\)以及每个三角形底边与\(x\)轴的距离,求该圣诞树的面积。Solution如图,这是一棵圣诞树,其由两部分组成,完整......
  • git-worktree
    1.说明git-worktreegitworktree非常适合大型项目又需要维护多个分支,想要避免来回切换的情况优点gitworktree可以快速进行并行开发,同一个项目多个分支同时并行演进gitworktree的提交可以在同一个项目中共享gitworktree和单独clone项目相比,节省了硬盘空间,......
  • react-d3-tree自定义节点使用案例
    react-d3-tree主要API及其中文解释:Tree组件的props:这些API提供了丰富的配置选项,可以用来定制树的外观和行为。例如,可以使用nodeSize属性调整节点的大小,使用pathFunc属性绘制自定义的连线,使用onClick属性处理节点的点击事件等等。data:树的数据对象。zoomable:指......
  • DevExpress WinForms TreeList控件,让业务数据展示更清晰!(一)
    DevExpressWinForms的TreeList控件是一个功能齐全、数据感知的TreeView-ListView的混合体,它可以以树形、网格或两者结合的形式显示数据信息。无论是数据绑定模式还是非绑定模式,都具有完整的数据编辑支持。PS:DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有......
  • uniapp windows 上架 apple store
    香蕉云蒲公英ios上架助手iOSDevelopment开发!先用上架助手在certificates里面生成一个p12文件在profiles里面生成mobileprovision文件就欧克了需要公司提供苹果开发者账号即可1.打开苹果开发者官网点击打开链接 2.点击这个选项打开开发者配置需要注册账号并花钱加......