当前位置: 首页 > article >正文

dfs复习

dfs前置知识

0小朋友崇拜圈 - 蓝桥云课

通过深搜,去找到该点指向的下一个点,然后返回所成的环的大小,保留最大的环的大小

通过添加时间戳,记录该点被遍历的时间,如果下一个点有被添加过时间戳,如果时间戳是大于等于我们的最小时间戳的(等于说明该点自成环),那么成环,环的大小=该点的时间戳-下个点的时间戳+1,返回环大小跳出递归,否则返回0跳出递归

否则继续往下去递归

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;

int n;
int a[N];
int dnt[N],idx,mindnt; //dnt[]表示每个小朋友的时间戳 idx 表示时间 mindnt表示最小时间戳

int dfs(int x)
{
  dnt[x] = ++idx;

  if (dnt[a[x]])
  {
    if (dnt[a[x]] >= mindnt) return dnt[x] - dnt[a[x]] + 1;

    return 0;
  }

  return dfs(a[x]);
}

int main()
{

http://www.kler.cn/a/469334.html

相关文章:

  • 弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了
  • 华为数通考试模拟真题(附带答案解析)题库领取
  • 在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示
  • NRF24L01模块STM32通信-通信初始化
  • 代码段中使用数据、栈
  • 数据分析-Excel
  • 我用AI学Android Jetpack Compose之入门篇(1)
  • unity 播放 序列帧图片 动画
  • 【0379】Postgres内核 walreceiver (libpqwalreceiver API)分析
  • STM32完全学习——0V5640的JPEG模式采集
  • 如何利用 Jenkins 实现高效的邮件告警
  • 【计算机网络】课程 实验三 跨交换机实现 VLAN 间路由
  • 海思Linux(一)-Hi3516CV610的开发-ubuntu22_04环境创建
  • ref()使用举例【Vue3】
  • 安徽省地图arcgis数据美化后mxd文件shp格式下载后内容测评
  • mysql 报错 ERROR 1396 (HY000) Operation ALTER USER failed for root@localhost 解决方案
  • 在Linux中,如何查看和修改网络接口配置?
  • 软件测试——面试八股文(入门篇)
  • Python实现Scheme
  • 短视频矩阵源码开发/saas矩阵部署/api矩阵源码接口搭建
  • 使用深度学习来实现图像超分辨率 综述!
  • SqlSugar-文章目录
  • 服务器开发 的泛型(Generics)基础知识
  • 推荐系统重排:MMR 多样性算法
  • 用Python构建一个简单的网络爬虫
  • Go语言的 的注解(Annotations)核心知识