题目链接 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j。设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径。 输入格式 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数 ...
分类:
其他好文 时间:
2020-01-30 20:50:28
阅读次数:
88
由于题目要使最长路径最短,于是很容易想到贪心策略: 每棵树和其它树连边的点一定是这棵树上能走到的最远距离最短的的点(由于本人语文水平太菜,这句话有点绕 qwq) 如果我们把上述的最短距离称作半径 $r$,$1,2,3...$ 是树按照 $r$ 排序后的。那么最后链接成的树应该长这样: 那么最后的答案 ...
分类:
其他好文 时间:
2020-01-28 00:03:38
阅读次数:
102
题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 题目格式要求: /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode righ ...
分类:
其他好文 时间:
2020-01-22 12:29:12
阅读次数:
64
思路分析: 二叉树的深度等于子树最大的深度加一,求子树的深度递归刚才的过程。递归的结束条件是结点为空时,深度为零。 考察:二叉树深度 题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 Java代码: ...
分类:
编程语言 时间:
2020-01-21 21:40:07
阅读次数:
77
题意:给你一个二维数组,求最长的递减路线的长度,只能向四个方向延伸。 解法1、dp【i】【j】以i、j结尾的最长路线长度。边界:每个数初值为1, 转移:从四周向i、j转移,if(a[i][j]>a[x][y]) dp[i][j] = max(dp[i][j] , dp[x][y]+1); 注意:这里 ...
分类:
其他好文 时间:
2019-12-11 09:18:05
阅读次数:
70
判断从顶点u到v是否有路径 void ExistPath(AdjGraph* G, int u, int v, bool& has) { int w; ArcNode* p; visit[u] = 1; if (u == v) { has = true; return; } p = G->adjli ...
分类:
编程语言 时间:
2019-11-25 09:22:50
阅读次数:
63
题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 思路分析:递归(二叉树最大深度,等于左右子树的最大深度+1) 代码实现: 一、深度优先比遍历(DFS) 二、层次遍历(BFS,广度优先) 时间复杂度:O(N ...
分类:
其他好文 时间:
2019-11-12 11:06:08
阅读次数:
97
f[i]表示以边i结尾的最长路径,g[i]表示以点i结尾的最长路径,f[i]=g[e[i].u]+1。注意特判边权相等的情况,每次更新边连接的出度点的g即可。 推的话,数据范围3e5所以想到dp,而且必须是一维,固定一维枚举一维。所以边权排个序,枚举时就不用管边权递增的约束条件,只需要特判下相等的情 ...
分类:
其他好文 时间:
2019-10-30 22:18:27
阅读次数:
108
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 ...
分类:
其他好文 时间:
2019-10-30 20:00:22
阅读次数:
103
Problem 一棵树的直径就是这棵树上存在的最长路径。现在有一棵n个节点的树,现在想知道这棵树的直径包含的边的个数是多少? Solution 随便找一个点,找最远的,再找新的点最远的。 当然我瞎搞的树状dp,子树分支最大的和次大的加起来就行。 Code include include includ ...
分类:
其他好文 时间:
2019-10-29 21:22:31
阅读次数:
123