每日课堂笔记(2026年1月1日)

每日摄影(河南开封清明上河园国际菊花展):


代码(dfs)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

const int maxn=1e5+10;
int h[maxn],ne[maxn],e[maxn],idx=0;
int n,m,dep[maxn],ans;

void add(int a,int b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
//链式前向星

void dfs(int n,int m){
    for(int i=h[n];~i;i=ne[i]){
        int j=e[i];
        if(j==m) continue;
        dep[j]=dep[n]+1;
        ans=max(ans,dep[j]);
        dfs(j,n);
    }
}
//dfs

int main(){
    memset(h,-1,sizeof h);
    //不可省略

    cin>>n>>m;
    for(int i=1;i<n;i++){
        int a,b;
        cin>>a>>b;
        add(a,b),add(b,a);
        //无向图
    }

    dfs(m,-1);
    //dfs(子节点,父节点)
    cout<<ans;
    return 0;
}

/*
in:
5 5
1 2
1 4
1 5
2 3

out:
3
*/

核心代码批注(dfs函数):

|-----------------------------------|---------------------|
| 代码 | 批注 |
| for(int i=hn;~i;i=nei){} | 遍历所有与n相连的节点(n的子节点) |
| int j=ei; | j为本次循环所取的n的子节点 |
| if(j==m) continue; | 判断j是否为n的父节点m(避免死循环) |
| depj=depn+1; | 更新j的深度(为父节点n的深度加1) |
| ans=max(ans,depj); | 更新最大值 |
| dfs(j,n); | 以j为子节点,为n父节点进行递归深搜 |
| | |
| | |

相关链接:

题目代码: AcWing 3699:树的高度 ← dfs+链式前向星-CSDN博客
链式前向星代码: yxc 图示"链式前向星"核心操作_链式前向星图示-CSDN博客
题目链接: 3699. 树的高度 - AcWing题库

相关推荐
ACP广源盛1392462567310 小时前
硬件选型笔记|国产 PCIe4.0 交换芯片 IX8012@ACP,边缘 AI 设备 IO 扩展方案探讨
人工智能·笔记·硬件架构·pcie·国产芯片
职豚求职小程序11 小时前
恒丰银行2026下半年笔试|考点&注意事项✅
笔记
Awh-12 小时前
ARM 裸机开发 DAY9 学习笔记
arm开发·笔记·学习
沫璃染墨12 小时前
从零入门数据结构与算法(一):复杂度分析——从算法效率到时间与空间复杂度
c语言·开发语言·数据结构·笔记·算法·飞书
北京盛世宏博12 小时前
异地机房采集踩坑笔记:以太网温湿度记录仪跨网段通信调试实战
开发语言·笔记·单片机·php·传感器·温湿度
FakeOccupational13 小时前
【电路笔记 STM32】Cortex-M7 UART DMA模式(DMA&空闲中断&普通模式+DMA&半满/全满中断&循环模式)
笔记·stm32·嵌入式硬件
心仪久了会沦陷14 小时前
C语言数据结构入门——队列补充:循环队列的数组实现
c语言·开发语言·数据结构·笔记
志尊宝14 小时前
Vue3 零基础每日笔记(081):富文本编辑器集成 wangEditor 5——封装
前端·javascript·vue.js·笔记·信息可视化·echarts
志尊宝15 小时前
Vue3 零基础每日笔记(080):Vue3 + ECharts 数据可视化——封装可复用图表组件
前端·javascript·vue.js·笔记·信息可视化·echarts