Dis2(dfs树)

图的遍历之-DFS深度优先遍历C++实现 深度优先遍历的思想: 沿着图的某一个分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止:首先以一个未被访问过的顶点作为起始顶点,沿着当前顶点的边走未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。 求出上图各个顶点到各个顶点的路径 #include using namespace std; 阅读详情

Dis2

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述 

给出一颗nn个点n−1n−1条边的树,点的编号为1,2,...,n−1,n1,2,...,n−1,n,对于每个点i(1≤i≤n)i(1≤i≤n),输出与点ii距离为22的点的个数。 

两个点的距离定义为两个点最短路径上的边的条数。 

输入描述:

 

第一行一个正整数nn。

接下来n−1n−1行每行两个正整数ui,viui​,vi​表示点ui,viui​,vi​之间有一条边。

输出描述:

输入共nn行,第ii行输出一个整数表示与点ii距离为22的点的个数。

示例1

输入

复制

4
1 2
2 3
3 4

输出

复制

1
1
1
1

说明

点1,31,3的距离为22,点2,42,4的距离为22。

备注:

1≤ui,vi≤n≤2000001≤ui​,vi​≤n≤200000

思路:

距离为2的点的个数=父亲节点的边树-1+子树边树-1

dfs遍历树就行

int n;
const int MAX=2e5+10;
vector<int>g[MAX];
int cnt[MAX];
void dfs(int u,int f){
    if(f>0) cnt[u]+=g[f].size()-1;
    for(int i=0;i<g[u].size();i++){
        int v=g[u][i];
        if(v==f) continue;
        cnt[u]+=g[v].size()-1;
        dfs(v,u);
    }
}
int  main(){
    cin>>n;
    for(int i=1;i<n;i++){
        int u,v;
        cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1,0);
    
    for(int i=1;i<=n;i++){
        cout<<cnt[i]<<endl;
    }
}

Highway(用dfs求树的直径) 链接:https://ac.nowcoder.com/acm/contest/1109/H 来源:牛客网 题目描述 In ICPCCamp there were n towns conveniently numbered with 1,2,…,n1, 2, \dots, n1,2,…,n connected with (n - 1) roads. The i-th road connect... 阅读详情

相关推荐

【深度优先搜索】【C++算法】834 树中距离之和

给定一个无向、连通的树。树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。 给定整数 n 和数组 edges , edges[i] = [ai, bi]表示树中的节点 ai 和 bi 之间有一条边。 返回长度为 n 的数组 answer ,其中 answer[i] 是树中第 i 个节点与所有其他节点之间的距离之和。

闻缺陷则喜何志丹 2086

01_树的 dfs 序

本文介绍了算法竞赛中树的DFS序(dfn序)这一重要概念。文章首先讲解了基于先序遍历的dfn序定义及其代码实现,通过深度优先遍历为树节点编号。随后阐述了dfn序的三个关键性质:子树dfn序的连续性、祖先节点编号小于子孙节点、子树编号区间计算公式。文章重点展示了dfn序的两个应用:高效判断节点是否在子树中(时间复杂度从O(nq)优化到O(n+q)),以及将树上问题转化为序列问题以便使用线段树等数据结构处理。最后提供了两道模板题(DFS序1和DFS序2)的完整代码实现,演示了如何利用树状数组和线段树来维护dfn

2403_88695928的博客 1339

BEVFusion实战:从零搭建LiDAR-Camera融合的3D目标检测环境(附避坑指南)

本文提供了BEVFusion实战指南,详细讲解如何从零搭建LiDAR-Camera融合的3D目标检测环境。内容涵盖环境配置、数据预处理、模型训练与性能优化等关键步骤,并附有实用的避坑技巧,帮助开发者高效部署这一先进的BEV感知算法。

p4q5r6s7t的博客 514

Dis2(distance2)

题目描述 给出一颗n个点n−1条边的树,点的编号为{1,2,…,n-1,n}1,2,…,n−1,n,对于每个点i(1<=i<=n),输出与点{i}i距离为{2}2的点的个数。 两个点的距离定义为两个点最短路径上的边的条数。 输入描述: 第一行一个正整数{n}n。 接下}n−1行每行两个正整数u,v 表示点u,v之间有一条边。 输出描述: 输出共n行,第i行输出一个整数表示与点i距离为2的点的个数。 样例 输入 4 1 2 2 3 3 4 输出 1 1 1 1 题目分析 其实这道题也不是很难,主要

Lopka的博客 825

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 318

基于迁移学习的花卉识别系统

本研究采用了预训练的经典深度学习模型,包括ResNet、AlexNet和VGG,通过微调的方式在Oxford-102数据集和一个自制花卉数据集上进行训练,并对图像进行了多种数据增强操作,以提高模型的泛化能力,致力于实现花卉的高效分类。

m0_71146337的博客 2375

树的直径 HDU2196

若想做这道题 首先要懂得树的最长路怎么计算 首先假设树的最长路的两个叶子节点为v1,v2,那么现有结论,从任意一点u出发走*到的最远的点一定是(v1,v2)中的一点,然后 再从v1或者v2出发走到的最远点一定是v2或者v1。所以经过两次搜索就能找到最长路径。 此题需要三次dfs 第一次找到其中一个v1 或v2 ,再两次从v1 -> v2及v2 -> v1 我们知道对于任意一点,它所能达到的最远距离为v1 或 v2 ,那么逆向思维, 我们可以先找到这两个端点,然后用dis数组来分别保存这两个端点到

m0_51731088的博客 134

EEGLAB+ERPLAB实战:从.cnt文件到情绪ERP差异波,一份避坑指南

本文详细介绍了使用EEGLAB和ERPLAB处理Neuroscan的.cnt格式脑电数据的全流程,从数据导入、预处理到情绪ERP差异波生成。重点解决了采样率验证、事件标记检查、重参考选择、滤波策略与ICA组合等实操难题,并提供了情绪图片ERP研究中P1、EPN和LPP成分的分析技巧,帮助研究者避免常见错误,提升数据处理效率。

weixin_26795617的博客 264

HLOJ 树形DP-树的直径(树形DP入门)

来源:JZOJ 题目描述 给定 111 棵 nnn 个点的边权树,让你求树的直径 解题思路 这题和树形dp练习4差不多,只是在 dfsdfsdfs 中的一个细节上做了一个小改动;其实,树的最长路径可以由最长链+次长链得到,这样就简单明了了 代码君 #include <bits/stdc++.h> using namespace std; long long dis[200010],...

Admin-zx 的博客 546

架构——异地多活成熟的架构模式

摘要: 本文系统介绍了三种异地多活架构模式:业务定制型、业务通用型和存储通用型。业务定制型针对核心业务定制化设计,复杂度低但扩展性差;业务通用型通过统一配套服务(流量调度、配置中心等)实现多业务兼容,适合业务量大但一致性要求不高的场景;存储通用型依托分布式一致性数据库(如OceanBase、TiDB)天然支持强一致性,适合金融等高要求场景,但对部署距离和成本有较高限制。文章对比了各模式的优缺点及适用场景,为不同业务需求下的架构选型提供了实践指导。

小志的博客 7085

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

693

深度优先搜索(DFS)和广度优先搜索(BFS)

深度优先和广度优先是在图和树的遍历搜索中比较常用的搜索方法 深度优先 算法简介 DFS是可用于遍历树或者图的搜索算法,DFS与回溯法类似,一条路径走到底后需要返回上一步,搜索第二条路径。在树的遍历中,首先一直访问到最深的节点,然后回溯到它的父节点,遍历另一条路径,直到遍历完所有节点。图也类似,如果某个节点的邻居节点都已遍历,回溯到上一个节点。 深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等.

段一的博客 6万+

MIKE水动力笔记18_如何将dfsu流场模拟结果的数据导出成txt文件

MIKE的模拟结果dfsu文件的数据是可以导出的,导出格式为xyz,我们也可以将其改后缀改为txt文本格式,其中包含了某一时刻下所有网格坐标点的数据。

晏长街的博客 4406

DFS求树的直径

这个知识点我是在刷题的时候遇见的,正好也学过dfs,所以这个知识点就吸收的特别快,学这个之前记得要把dfs弄懂后再看证明任意一点P搜出的最远端点Q必定为直径的某一端!!!!!!

筏的博客 1789

UNet 改进(19):与ASPP结合的图像分割模型

这个代码实现了一个改进版的UNet模型,在传统的UNet架构基础上,引入了ASPP模块来增强模型捕获多尺度上下文信息的能力。​​UNet主干网络​​:经典的编码器-解码器结构,带有跳跃连接​​ASPP模块​​:位于瓶颈层,用于提取多尺度特征。

2401_82355416的博客 878

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode刷题笔记(12)DFS深度优先算法Ⅱ

LeetCode刷题笔记(12)DFS深度优先算法Ⅱ 背景 好几天没刷题了,出差做作业然后工作比较忙,应该改正。今天是LeetCode的深度优先算法第二部分,也结束了。 130、填充封闭区域 给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。 找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后,矩阵变为: X X X X X X X X X X X X X O X X 从

weixin_44580808的博客 155

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

树的直径(2次DFS法+DP法)

给定由 𝑛 个结点构成的树,树边带权,求树上最长路径的长度。这条最长路径,被称为树的直径。树的直径有时也可指代该路径长度。

菜狗成长为蒟蒻之路 1283

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

python栈迷宫路径搜索_深度优先搜索(DFS)

python链栈算法,DFS深度优先搜索 算法通过尝试四个方向(上、下、左、右)来探索迷宫。它使用一个栈来记录当前路径。如果到达终点,它会打印路径并返回True。如果找不到路径,它会打印"走不通!"并返回False。 # 1. 当前所在节点四个方向分别为 x+1,y; x-1,y; x,y+1; x,y-1 # 2. 当前节点,也就是栈里的最后一个节点 stack[-1] # 3. 当走到终点时,就可以输出栈了 # 4. 没走到终点并且下一节点能走时,把该下一节点加入栈并标记为2,表示走过了

HYSliuliuliu的博客 1万+

树的直径 (通过两次dfs或者bfs)

树的直径定义:一棵树中距离最远的两个点之间的距离就是树的直径 算法: 首先以任意一个点为起点,通过dfs或bfs求出源点到所有点的路径长度,从中选择长度最长的路径到达的点,再次以这个点为源点重复上述步骤,得到的第二个最长的路径连接的两个点就是树的直径。 code: //求树的直径 #include<bits/stdc++.h> using namespace std; con...

correct 861

深度优先搜索DFS

深度优先搜索也就是DFS,使我们oi竞赛中使用的最多的算法之一 我们今天就来看下这个神奇的算法 1.什么是DFS 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次 2.DFS有什么用 其实这个DFS往往用来遍历一幅图,在树剖、网络流等算法中会用到。它还可以用来...

amunnku8163的博客 96

广度优先算法,深度优先算法和DijKstra算法

我们经常会碰到最短路径问题,而最短路径问题的解决方法多种多样,广度优先搜索(BFS),深度优先搜索(DFS)和DijKstra算法貌似都能解决这个问题,这里就简单介绍一下这些算法,分析一下它们的适用范围。

天岚1993_量产机的博客 2万+

树的直径算法(dfs)

1.什么是树的直径? 树的直径是一颗树中任意两点最长的距离 2.如何求树的直径? (1).任意找一点x,并求得树上任意一点到x的距离存到数组dist中 (2).找到距离x最长的点y并以点y为起点找到树中距离y最远的点z,则z-y长度就是树的直径 3.证明y一定是某一直径的端点 acwing1207 #include <cstdio> #include <cstring> #include <iostream> #include <algorith

m0_56250941的博客 1683

树形dp基础知识(树的dfs序,树的深度,树的直径,树的重心)

一、树的dfs序 1、思路 对数进行深度优先搜索时,对于每个节点,在刚进入递归后以及即将回溯前各记录一次该点的编号,最后产生的长度为2N的节点序列就为树的DFS序。——摘自算法竞赛进阶指南(李耀东) 2、性质 每个节点的编号出现两次,一次为L[x],R[x]L[x],R[x]L[x],R[x]。 闭区间[L[x],R[x]][L[x],R[x]][L[x],R[x]],就是以x为根的子树的DFS序。 3、Code const int N = 1e5; int a[N<<1],cnt = 0;

684

算法提高 树的直径

题目链接 问题描述:树的直径 输入格式:输入的第一行包含一个整数n,表示树中的点数。接下来n-1行,每行3个正整数,表示连同的两点及边的权值。 输出格式:输出1行,包含一个整数,表示树的直径。 思路 这道题的话,要我们求的是树的直径,所以我们首先要明白什么是树的直径:一棵树上最远的两个点间的距离 一说到最远,那就要想到遍历,一说到遍历,那就又要想到深度优先和广度优先,结合题意,要求的是最远的距离,所以我们用的是深度优先搜索(dfs) 那究竟要怎么实施呢,其实求树的直径有一个很简单的方法(我也是从csdn各位

qq_51052824的博客 285

【蓝桥杯】 试题 算法提高 树的直径 (dfs)

资源限制 时间限制:100ms 内存限制:8.0MB 问题描述 树的直径 输入格式 输入的第一行包含一个整数n,表示树中的点数。接下来n-1行,每行3个正整数,表示连同的两点及边的权值。 输出格式 输出1行,包含一个整数,表示树的直径。 样例输入 7 1 2 1 1 3 1 2 4 1 3 5 1 4 7 1 4 6 1 样例输出 5 数据规模和约定 n<10^5 思路: 树的直径:找相距最远两点之间的距离,即为树的直径。 从任一点出发,找到距离该点最远的点 p1, p1 必定为直径的一个端点。

黑桃 821

DFS深度优先搜索解决迷宫问题

上一篇博客讲解了BFS广度优先搜索求解迷宫问题,今天试试DFS深度优先搜索。

冲出仁川,走出马德里,故事还会再继续 1376
上一篇: 位运算(&、|、^、~、>>、<<)总结
下一篇: 装备合成(三分)
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值