POJ 2631 Roads in the North(树形dp)

C++剑指offer:[POJ]2631 Roads in the North - 用树形DP的方式求出一棵树的直径 前言 此题是道很简单的题(做法不单一,不仅只有树形DP的方法) 做完了这道题才发现此题原来是一道求树的直径的题,也就是求树上两个节点的最大距离。 题目 问题 N(2692): [POJ2631]北极地区的路 时间限制:1 Sec内存限制:128 MB 题目描述 寒冷、人烟稀少的北极地区修建与维护道路时非常昂贵的。因此,修路时只会在任意两个村子之间形成一条唯一的路径,并且中途... 阅读详情

题目链接:POJ 2631 Roads in the North

我也不知道这到底是树形dp还是dfs。。是在树形dp专题上的。

寻找树上两个节点之间最长的距离,仔细观察树的形式可以发现这样的最长距离都可以转化为以某个节点作为父节点,求它的两个最长子链的长度和。

#include <iostream>
#include <stdio.h>
#include <cstring>

using namespace std;

const int MAX_N = 10000 + 100;
const int MAX_M = MAX_N << 1;
int head[MAX_N];
struct Edge
{
    int v, next, w;
};
Edge e[MAX_M];
int u, v, w, res, cnt;
char str[100];

int dfs(int u, int fa)
{
    int v, temp, ans, _max;
    _max = 0;
    for(int i = head[u]; i != -1; i = e[i].next)
    {
        v = e[i].v;
        if(v == fa)
            continue;
        temp = dfs(v, u) + e[i].w;
        res = max(res, temp + _max);
        _max = max(_max, temp);
    }
    return _max;
}

void addEdge(int u, int v, int w)
{
    e[cnt].w = w;
    e[cnt].v = v;
    e[cnt].next = head[u];
    head[u] = cnt;
    cnt++;
}
int main()
{
    cnt = res = 0;
    memset(head, -1 ,sizeof(head));
    /*while(gets(str))
    {
        if(!str[0])
            break;
        sscanf(str, "%d%d%d", &u, &v, &w);
        addEdge(u, v, w);
        addEdge(v, u, w);
    }*/
    while(scanf("%d%d%d", &u, &v, &w) != EOF)
    {
        addEdge(u, v, w);
        addEdge(v, u, w);
    }
    dfs(1, -1);
    printf("%d\n", res);
    return 0;
}



科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx 科技中介服务机构想要提升服务效率,需要哪些数智工具支持? 立即下载

相关推荐

Docker启动安装nacos(详情讲解,全网最细)

docker安装nacos保姆级教程

ilvjiale的博客 8万+

poj 2631 Roads in the North BFS/树状DP

传送门:poj 2631 Roads in the North题目大意输入边的两个顶点和权值,输出任意两个顶点的最远距离;解题思路这是一个裸的求树的直径的题目。 先说用BFS的方式,第一个BFS随便找一个顶点进行松弛,找到最远的一条路径并且记录下来那个顶点,因为这个距离肯定是包含在了最后的最长路径里面,所以在对刚才找到的那个节点进行一次BFS找到就是树的直径。AC代码#include<cstdio

woshinannan的专栏 476

新手友好的PythonUI库PySimpleGUI项目已下架,切换4.50.6版本的方法

过期后,如果还想使用 PySimpleGUI,则需要切换到版本 4,而版本 4 在 GitHub 上有很多社区维护的版本可以选择。开发团队尝试了 7 年,但始终没能获得足够的收入来维持项目的运营,尤其是开源项目通常面临资金不足的问题。商业许可证是永久有效的,用户可以在支持期结束后依然使用应用程序,并会提供离线版本的文档以供参考。尽管项目关闭,但对购买了商业许可证的用户,团队仍会在接下来的一年内提供支持。

baidu_34681715的博客 6858

POJ2631 最远点对(树形dp)

POJ2631 树形dp可以边权不限(正负都可) 题意:给定一个树图,求最远点队(边权重和最大) 对于一个点而言,穿过它的最长路径是它的最长边与次长边之和。 int h[maxn], e[maxn], w[maxn], ne[maxn], idx; int ans; int n; void add(int a, int b, int c) { e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++; } int dfs(int u, int father)

手扶拖拉机如何改装四驱 210

Unity URP热扭曲效果实战:如何让半透明物体也‘动’起来(附完整Shader代码)

本文深入解析Unity URP管线中热扭曲效果无法影响半透明物体的核心原因,并提供一套完整的实战解决方案。通过编写自定义Shader,并巧妙利用URP的Render Objects渲染器功能,成功让指定半透明物体(如粒子特效)也能被扭曲效果影响,从而制作出火焰、热浪等更具视觉冲击力的特效。文末附有完整的Shader代码与进阶优化技巧。

pz890123的博客 501

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 280

剑指offer: [POJ]2631 The Fair Nut and the Best Path 树形DP的方式求解树的直径

题目大意: 树上有村子,求最远两个村子的距离 解题思路:很显然这是一个裸的树的直径,有很多种方法可以求解,这些写一下树形DP的解法 首先定义一个F数组,f[x]的含义是以x点为根节点,到最远的子树叶子点距离,然后每个点都跑一遍即可。 Code: #include <bits/stdc++.h> typedef long long ll; using namespace std; const int N=10010; struct node { int v,w; node() {}; no

林黛玉到拔垂杨柳的博客 245

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 929

POJ 2631 Roads in the North 树的直径

题目大意:裸的树的直径。 思路:随便用一个点跑BFS,求出这个点到所有点的距离,取距离最长的那个点,再用那个点跑BFS,最远的距离就是这棵树的直径。 CODE: #include #include #include #include #include #define MAX 20010 using namespace std; int x,y,z; int

(╯°口°)╯(┴—┴ 1569

(五)深入理解蓝牙BLE之“Beacon包格式详解”

蓝牙Beacon格式详解 本文重点在结合Bluetooth官网spec和几个例子来使beacon帧格式更加容易被理解。 广播帧格式: 首先beacon是蓝牙BLE广播包的一种,蓝牙广播帧格式如下: PS:其实BLE数据帧除了报头字段和数据字段定义与广播帧不同之外,前导/接入地址/长度/校验格式均相同。 广播帧数据字段格式: 数据字段最长为37个字节:6个字节的广播设备地址 + 31个字节广播数据。 广播数据的格式如下:AD Structure1 +AD Structure2 + .....

1万+

西门子G120变频器在立体仓库堆垛机应用参数设置

本文详细介绍了G120 CU240E及CU250S变频器的参数设置流程。主要内容包括:1)快速调试步骤,从新建项目、扫描节点到设置电机类型、负载类型等参数;2)抱闸参数设置方法;3)参数下载异常时的处理方案。重点说明了通过STARTER软件进行向导式调试的完整过程,包括电机铭牌参数输入、识别方式选择等关键环节,并提示了通讯连接注意事项。当下载失败时,提供了通过导入导出项目文件解决问题的具体方法。

xdpcxq的专栏 864

【POJ2631】Roads in the North【树的直径】

题目大意: 题目链接:http://poj.org/problem?id=2631 求一棵树的直径。 思路: 树的直径模板题。 方法一: 树形DPDPDP求输的直径。 考虑以111为根节点,求出f[i]f[i]f[i]表示从iii到以iii为根的子树的任意节点的最大路径和。那么很明显有 f[i]=max(f[i],f[j]+dis[i][j])(j∈son[i])f[i]=max(f[i],f[...

stoorz 344

YOLOv8改进,YOLOv8主干网络替换为ShuffleNetV2

ShuffleNet V2的设计原则:1.减少内存访问成本:通过优化数据传输路径,减少内存访问延迟,提高整体运算速度。2.考虑平台特性:针对不同硬件平台的特性进行优化设计,确保在目标平台上的高效运行。3.结构简洁高效:采用简洁而高效的模块设计,降低计算复杂度,同时保持或提升模型的预测准确性。下图,以四种不同计算复杂度水平下的准确性(在ImageNet验证集上的分类),速度和FLOPs的测量结果。(a, c) 为GPU结果,批量大小为8。(b, d) 为ARM结果,批量大小为1。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1567

Roads in the North POJ - 2631 树的直径 BFS | 树形dp

题解 题目大意 给你n-1条带权边组成一个n个节点的树 题目没给n接收到文件尾 求这个树的直径 树的直径为树中两个距离最远点的距离 方法1 两次BFS 第一次任找一点为起点进行BFS得到最远的点p 点p一定为直径上的一个端点 第二次以p为起点再次BFS得到最远的点q 并求出pq之间的距离即为树的直径 AC代码 #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;iostre...

CaprYang的博客 236

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj2631 Roads in the North(树的直径/两次bfs/树形dp)

题意 求树的直径,即树上最长的一条路 题解 ①两次bfs ②两次dfs,期间更新最大值 ③树形dp,因为一个分支节点只能从三个方向更新,最大的那两个方向之和就是该点的最长距离 思路来源及证明部分 http://hzwer.com/2996.html https://www.cnblogs.com/a-clown/p/6131346.html 代码 ①树形dp #incl...

小衣同学的博客 590

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ-2631.Roads in the North(求树的直径)

2631.Roads in the North Description Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route...

紫藤&code的博客 224

【POJ 2631】 Roads in the North

Roads in the North Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5802 Accepted: 2731 Description Building and maintaining roads among communities in t...

weixin_30734435的博客 120

POJ 2631 Roads in the North(树的直径)

Description 给出一棵无向树,求树的直径,即树上两点之间的最长距离 Input 每行三个整数a,b,c表示树上a点与b点之间有权值为c的一条边,以文件尾结束输入 Output 输出树的直径 Sample Input 5 1 6 1 4 5 6 3 9 2 6 8 6 1 7 Sample Output 22 Solution 先给出一个结论: 从任一点s出发

ZSQ 896

#寒假1# F - Roads in the North

题目 https://vjudge.net/problem/POJ-2631 思路 求树的直径模板题… 树的直径:树上两个节点之间最远的距离(类比圆的直径) 方法一:两次DFS ① 从任意一点P出发,通过DFS寻找离它最远的点Q ② 再次从点Q出发,通过DFS寻找离它最远的W ③ 直径即为WQ 证明过程略,可以用反证法 方法二:树形DP 待填坑ing… 代码 #include <iostream> #include <vector> #include <cstring&gt

syzyaaa 202

POJ 2631 Roads in the North (模板题)(树的直径)

<题目链接> 题目大意:求一颗带权树上任意两点的最远路径长度。 解题分析: 裸的树的直径,可由树形DP和DFS、BFS求解,下面介绍的是BFS解法。 在树上跑两遍BFS即可,第一遍BFS以任意点为起点,此时得到的离它距离最远的点为树的直径上的端点之一,然后再以这个端点为起点,跑一遍BFS,此时离它最远的点为树直径的另一个端点,同时,它们之间的距离即为树的直径。 1 #i...

weixin_30607659的博客 154

[树上DP] POJ2631 树的最长路径(最远点对)

题目 对于一棵n个结点的无根树,找到一条最长路径。换句话说,要找到两个点,使得它们的距离最远。 POJ2631 思路 和树的重心问题一样,先把无根树转成有根树。对于任意结点i,经过i的最长路就连接i的两棵不同子树u和v的最深叶子的路径。 基本的求法是,先随便找一个点作为根结点转换为无根树后,遍历每一个点,找出当i为根结点时的子树到叶子的最大距离d(j),在根据d(j)求出结点i作...

OI - IceCab 3242

POJ2631Roads in the North(树的直径)

Description Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route from a village to a vi

菜鸟的自我修养 879

POJ 2631 Roads in the North 树上最长路 树型DP

Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is only one route from a village to a village that do

Sion 694

POJ 3342 树形DP入门题

题目意思和POJ2342一样,只是多加了一个条件,如果最大方案数唯一,输出Yes,不唯一输出No dp的是时候多加一个变量记录答案是否唯一即可 #include "stdio.h" #include "string.h" #include "vector" using namespace std; struct node { int fa; vectorchi

973

POJ 2631 树的直径

树的直径 问题:树的直径定义为一棵树上两个节点间的路径长度的最大值。 分析: 树形 dp:我们以任意一个点为根,向下进行遍历。经过 u 点,而不经过其父节点的最长路 径的两个端点,一定是在他的不同的子树中的两个叶子节点,因此我们可以记录 u 点的各个子 树的深度的最大值和次大值。累加即为经过这个节点时的最长路经长度。当然最长路径也可能从 父节点经过,那就是父节点的问题了。最后输出所有点最大值和次大...

qq_38472193的博客 441

树的直径【树形dp】【bfs】【poj2631】

题目传送门 树形DP解法 #include<iostream> #include<algorithm> #include<cmath> #include<string.h> #include<stdio.h> using namespace std; const int N=1e6; int h[N],e[N],w[N],ne[N],id...

谁是凶手1703 192
上一篇: URAL 1821 Biathlon(模拟)
下一篇: UVa 10594 Data Flow(无向图的费用流)
小爷永远不死
博客等级 码龄15年 58粉丝 363原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值