题目描述:

方法一:深度优先:

class Solution:
def treeDiameter(self, edges: List[List[int]]) -> int:
adjacency = collections.defaultdict(set)
for i,j in edges:
adjacency[i].add(j)
adjacency[j].add(i)
memo = {}
def dfs(i,j):
if (i,j) in memo:
return memo[i,j]
longest = 0
for k in adjacency[j]:
if k == i:continue
longest = max(longest,dfs(j,k))
memo[(i,j)] = longest + 1
return memo[(i,j)]
for i,j in edges:
dfs(i,j)
dfs(j,i)
return max(memo[(i,j)]+memo[(j,i)]-1 for i,j in edges)

方法二:广度优先

class Solution:
def treeDiameter(self, edges: List[List[int]]) -> int:
adjacency = collections.defaultdict(set)
for i,j in edges:
adjacency[i].add(j)
adjacency[j].add(i)
def bfs(node):
queue = collections.deque()
queue.append((node,0))
memo = {node}
while queue:
n,long = queue.popleft()
for nei in adjacency[n]:
if nei not in memo:
memo.add(nei)
queue.append((nei,long+1))
return n,long far,long = bfs(0)
far2,longest = bfs(far)
return longest

leetcode-12双周赛-1245-树的直径的更多相关文章

  1. [J]computer network tarjan边双联通分量+树的直径

    https://odzkskevi.qnssl.com/b660f16d70db1969261cd8b11235ec99?v=1537580031 [2012-2013 ACM Central Reg ...

  2. HDU 4612——Warm up——————【边双连通分量、树的直径】

    Warm up Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  3. [JZOJ5465]道路重建--边双缩点+树的直径

    题目链接 lueluelue 分析 这鬼题卡了我10发提交,之前做过一道类似的题目:https://rye-catcher.github.io/2018/07/09/luogu%E9%A2%98%E8 ...

  4. LeetCode 1245 树的直径

    地址 https://leetcode-cn.com/contest/biweekly-contest-12/problems/tree-diameter/ 给你这棵「无向树」,请你测算并返回它的「直 ...

  5. HDU4612 Warm up 边双连通分量&&桥&&树直径

    题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...

  6. HDU4612 Warm up 边双(重边)缩点+树的直径

    题意:一个连通无向图,问你增加一条边后,让原图桥边最少 分析:先边双缩点,因为连通,所以消环变树,每一个树边都是桥,现在让你增加一条边,让桥变少(即形成环) 所以我们选择一条树上最长的路径,连接两端, ...

  7. hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】

    Warm up Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Su ...

  8. HDU 4612 Warm up (边双连通分量+缩点+树的直径)

    <题目链接> 题目大意:给出一个连通图,问你在这个连通图上加一条边,使该连通图的桥的数量最小,输出最少的桥的数量. 解题分析: 首先,通过Tarjan缩点,将该图缩成一颗树,树上的每个节点 ...

  9. 【HDOJ4612】【双连通分量缩点+找树的直径】

    http://acm.hdu.edu.cn/showproblem.php?pid=4612 Warm up Time Limit: 10000/5000 MS (Java/Others)    Me ...

  10. Gym - 100676H H. Capital City (边双连通分量缩点+树的直径)

    https://vjudge.net/problem/Gym-100676H 题意: 给出一个n个城市,城市之间有距离为w的边,现在要选一个中心城市,使得该城市到其余城市的最大距离最短.如果有一些城市 ...

随机推荐

  1. string,const char*, char*转换之后还是指向同一片内存地址么?

    class Same { public: void reverse(const char* str) { char* A = const_cast<char*>(str); A[] = ' ...

  2. Network基础(三):网线的制作、交换机基本命令模式、交换机命令行基本配置、交换机的密码设置

    一.网线的制作 目标: 在常见的计算机网络中,网线主要用来连接计算机与交换机(或宽带路由器).交换机与交换机.交换机与路由器,以及需要连网的其他各种设备.网线的制作与测试是作为网络管理员的一个入门技能 ...

  3. jetson资料

    http://www.waveshare.net/wiki/Jetson_Nano_Developer_Kit http://www.waveshare.net/wiki/JetBot_AI_Kit ...

  4. ASP.NET Core学习——7

    多环境ASP.NET Core介绍了支持在多种环境中管理应用程序行为的改进,如开发(devlopment),预演(staging)和生成(production).环境变量用来指示应用程序正在运行的环境 ...

  5. MySQL 计算中位数

    mysql中位数 奇数取中间的值,偶数取中间两个数的平均值 eg: 12345 中位数4 1234 中位数2.5 SELECT avg(t1.money) as median_val FROM ( S ...

  6. STM32例程之USB HID双向数据传输(源码下载)【转】

    程序功能 将STM32的USB枚举为HID设备. STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收. 端点长度为64,也就是单次最多可以传输64个字节数据. STM32获取上位 ...

  7. Python sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings......

    完整的错误信息如下: You must not use 8-bit bytestrings unless you use a text _factory that can interpret 8-bi ...

  8. Windows IO System

    Windows IO System是由一些executive components组成,这些component可以认为是ntoskrnl.exe中相对独立的一些module. 整个IO System是 ...

  9. JavaScript类型和语法

    JavaScript类型和语法 一.类型 1.内置类型(null.undefined.boolean.number.string.object.symbol(es6中新增))(除对象之外,其它统称为基 ...

  10. tushare积分怎么获得 tushare pro 积分充值 积分转让

    本人是做量化投资的,团队转型,换了交易策略,手头有多个离职同事的闲置转让.600分:原价50元,仅需39元1500分:原价150元,仅需109元(售罄)2000分:原价200元,仅需149元5000分 ...