leetcode1617.统计子树中城市之间最大距离
创始人
2024-06-02 22:08:00
0

题目:
给你 n 个城市,编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges ,其中 edges[i] = [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了一棵 树 。

一棵 子树 是城市的一个子集,且子集中任意城市之间可以通过子集中的其他城市和边到达。两个子树被认为不一样的条件是至少有一个城市在其中一棵子树中存在,但在另一棵子树中不存在。

对于 d 从 1 到 n-1 ,请你找到城市间 最大距离 恰好为 d 的所有子树数目。

请你返回一个大小为 n-1 的数组,其中第 d 个元素(下标从 1 开始)是城市间 最大距离 恰好等于 d 的子树数目。

请注意,两个城市间距离定义为它们之间需要经过的边的数目。

在这里插入图片描述

方法一:动态规划

思路:

参考B站花花酱的视频:https://www.bilibili.com/video/BV1Ei4y1j7h5/

d:以u为根节点的树的直径
k:根节点u到树中最远节点的距离
在这里插入图片描述
在这里插入图片描述

  1. dp定义:
    dp[i][k][d]: 以i为根节点且直径为d的子树的数量,k是根节点i到子树中最远节点的距离
  2. 初始化:
    dp[i][0][0]=1 (仅包含一个节点的树)
  3. 状态转移
    dp[u][k][d]=sum(dp[u][k1][d1]*dp[u][k2][d2]),其中:k=max(k1,k2+1),d=max(d1,d2,k1+k2+1)

解答:
暂时略

方法二:任意两点之间的距离

思路:
参见leetcode官方题解方法三

解答:

class Solution:def countSubgraphsForEachDiameter(self, n: int, edges: List[List[int]]) -> List[int]:#建树g=[[] for _ in range(n)]#将编号调整为从0开始for x,y in edges:g[x-1].append(y-1)g[y-1].append(x-1)#计算树上任意两点间的距离dis=[[0]*n for _ in range(n)]def dfs(x,fa):for y in g[x]:if y!=fa:dis[i][y]=dis[i][x]+1 #自顶向下dfs(y,x)for i in range(n):dfs(i,-1) #计算i到其余点的距离def dfs2(x,fa):#能递归到这,说明x可以选cnt=1 #选xfor y in g[x]:#and的优先级要高于or,为了防止重复计算,此处作了优化if y!=fa and (di[y]j) and (dj[y]i):cnt*=dfs2(y,x)  #每棵子树独立if di[x]+dj[x]>d: #x是可选点cnt+=1  #不选x,空树return cntans=[0]*(n-1)for i,di in enumerate(dis):for j in range(i+1,n):dj=dis[j]d=di[j]ans[d-1]+=dfs2(i,-1)return ans

相关内容

热门资讯

这个春天的作文 关于这个春天的作文(精选42篇)  无论是身处学校还是步入社会,大家都不可避免地会接触到作文吧,作文...
唐人神香肠小学作文 唐人神香肠小学作文  唐人神香肠,难道是食物不成?不,他只是我们新来的科学老师的外号罢了。  "唐人...
和平的作文300字 关于和平的作文300字5篇  在现实生活或工作学习中,大家一定都接触过作文吧,作文根据写作时限的不同...
欢度国庆作文 欢度国庆作文五篇  在日常学习、工作和生活中,大家都不可避免地要接触到作文吧,作文是人们以书面形式表...
亲爱的哥哥作文 亲爱的哥哥作文(8篇)  在日常学习、工作抑或是生活中,大家或多或少都会接触过作文吧,作文要求篇章结...
描写人物特点的作文 描写人物特点的作文(精选44篇)  无论是在学校还是在社会中,大家都不可避免地会接触到作文吧,根据写...
《不能说的秘密》的歌词 《不能说的秘密》的歌词  不能说的秘密获得第44届台湾电影金马奖之最佳电影原创歌曲奖。下面,小编为大...
黄鼠狼给鸡拜年作文 黄鼠狼给鸡拜年作文【热】(精选15篇)  在日常学习、工作或生活中,大家一定都接触过作文吧,作文是通...
作文:我的学与玩 作文:我的学与玩  我们在尽情的玩耍的时候,常常忘记了学习;我们在学习的时候, 又经常想着玩,我的学...
雨下得很大的比喻句 雨下得很大的比喻句  1、雨下得很大,像瓢泼的一样!  2、雨下得很大,真像一面大瀑布!  3、雨下...
尊敬老人小学作文 尊敬老人小学作文(精选12篇)  在学习、工作或生活中,大家都尝试过写作文吧,写作文可以锻炼我们的独...
我有话要说的歌词 我有话要说的歌词  对我来说 说的太多  也许不能 让我改变什么  你凭什么说 是谁对谁错  我的耳...
以半春为题的作文 以半春为题的作文  凌晨四点醒来,发现海棠未眠。  如果一朵花很美,那么有时我会不由自主地想到:“要...
福州小吃的历史典故 有关福州小吃的历史典故  福州小吃是汉族饮食文化的重要组成部分,属于福州菜。它的历史和影响与福州菜一...
中国寓言故事《负荆请罪》 中国寓言故事《负荆请罪》  故事:在现实认知观的基础上,对其描写成非常态性现象。是文学体裁的一种,侧...
人生需要做点“无用功”议论文 人生需要做点“无用功”议论文  看到题目就会想知道什么是“无用功”?按照最本原的出处,“无用功”一词...
从游戏中我学到了语文-记事作... 从游戏中我学到了语文-记事作文700字  在日复一日的学习、工作或生活中,大家或多或少都会接触过作文...
登山的作文800字 有关登山的作文800字  人生就如登山,每个人都在前行的过程中不断地累积东西,提供了有关登山的作文,...
我的幸福生活优秀作文 我的幸福生活优秀作文(精选30篇)  在现实生活或工作学习中,大家都不可避免地要接触到作文吧,写作文...
有一种记忆叫温暖作文 有一种记忆叫温暖优秀作文(精选10篇)  无论是在学校还是在社会中,大家最不陌生的就是作文了吧,写作...