leetcode-12双周赛-1245-树的直径
题目描述:


方法一:深度优先:
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-树的直径的更多相关文章
- [J]computer network tarjan边双联通分量+树的直径
https://odzkskevi.qnssl.com/b660f16d70db1969261cd8b11235ec99?v=1537580031 [2012-2013 ACM Central Reg ...
- HDU 4612——Warm up——————【边双连通分量、树的直径】
Warm up Time Limit:5000MS Memory Limit:65535KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- [JZOJ5465]道路重建--边双缩点+树的直径
题目链接 lueluelue 分析 这鬼题卡了我10发提交,之前做过一道类似的题目:https://rye-catcher.github.io/2018/07/09/luogu%E9%A2%98%E8 ...
- LeetCode 1245 树的直径
地址 https://leetcode-cn.com/contest/biweekly-contest-12/problems/tree-diameter/ 给你这棵「无向树」,请你测算并返回它的「直 ...
- HDU4612 Warm up 边双连通分量&&桥&&树直径
题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...
- HDU4612 Warm up 边双(重边)缩点+树的直径
题意:一个连通无向图,问你增加一条边后,让原图桥边最少 分析:先边双缩点,因为连通,所以消环变树,每一个树边都是桥,现在让你增加一条边,让桥变少(即形成环) 所以我们选择一条树上最长的路径,连接两端, ...
- hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】
Warm up Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Su ...
- HDU 4612 Warm up (边双连通分量+缩点+树的直径)
<题目链接> 题目大意:给出一个连通图,问你在这个连通图上加一条边,使该连通图的桥的数量最小,输出最少的桥的数量. 解题分析: 首先,通过Tarjan缩点,将该图缩成一颗树,树上的每个节点 ...
- 【HDOJ4612】【双连通分量缩点+找树的直径】
http://acm.hdu.edu.cn/showproblem.php?pid=4612 Warm up Time Limit: 10000/5000 MS (Java/Others) Me ...
- Gym - 100676H H. Capital City (边双连通分量缩点+树的直径)
https://vjudge.net/problem/Gym-100676H 题意: 给出一个n个城市,城市之间有距离为w的边,现在要选一个中心城市,使得该城市到其余城市的最大距离最短.如果有一些城市 ...
随机推荐
- jQuery 实现表格变色效果
html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- JavaSE---IO体系
1.BIO 1.1 Block IO,同步阻塞IO: 1.2 eg:java.io 包下的 InputStream . OutputStream. Writer.Reader... j ...
- (urls.E006) The MEDIA_URL setting must end with a slash. (urls.e006)
这个错误是会害死人的! repath 的使用 setting的配置:在末尾要加一个斜杠 models urls的配置
- sql 实现分页+分组并取出分组内的前n条数据
一.建表 if exists (select * from sysobjects where id = OBJECT_ID('[test]') and OBJECTPROPERTY(id, 'IsUs ...
- Django--分页器(paginator)、Django的用户认证、Django的FORM表单
分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...
- Spring框架-经典的案例和demo,一些可以直接用于生产,使用atomikos来处理多数据源的一致性事务等
Spring Examples Demo website:http://www.ityouknow.com/ 对Spring框架的学习,包括一些经典的案例和demo,一些可以直接用于生产. sprin ...
- Security基础(一):Linux基本防护措施、使用sudo分配管理权限、提高SSH服务安全
一.Linux基本防护措施 目标: 本案例要求练习Linux系统的基本防护措施,完成以下任务: 修改用户zhangsan的账号属性,设置为2015-12-31日失效(禁止登录) 锁定用户lisi的账户 ...
- Cisco基础(一):Vlan的划分、配置trunk中继链路、以太通道配置、DHCP服务配置
一.Vlan的划分 目标: VLAN(虚拟局域网)是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段.一个VLAN可以在 一个交换机或者跨交换机实现 ...
- throw throws 区别
throw是语句抛出一个异常.语法:throw (异常对象); throw e; throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)] ...
- AcWing 226. 233矩阵 (矩阵快速幂+线性递推)打卡
题目:https://www.acwing.com/problem/content/228/ 题意:有一个二维矩阵,这里只给你第一行和第一列,要你求出f[n][m],关系式有 1, f[0][ ...