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

基环树(模板) 2876. 有向图访问计数

在这里插入图片描述

对于基环树,我们可以通过拓扑排序去掉所有的树枝,只剩下环,题目中可能会有多个基环树

在这里插入图片描述

思路:我们先利用拓扑排序将树枝去掉,然后求出每个基环树,之后反向dfs求得所有树枝的长度即可

class Solution {
public:vector<int> countVisitedNodes(vector<int>& edges) {//基环树板子题int n = edges.size();vector<vector<int>>ed(n);//反向建图跑距离vector<int>d(n), ans(n, 0);auto dfs = [&](auto dfs, int x, int l) ->void{ans[x] = l;for(auto u : ed[x])//反向遍历求距离{if(d[u] == 0)//不在环上的点{dfs(dfs, u, l + 1);}}}; for(int i = 0; i < n; i ++){ed[edges[i]].push_back(i);d[edges[i]] ++;}queue<int>q;for(int i = 0; i < n; i ++){if(d[i] == 0) q.push(i);}while(q.size()){int k = q.front();q.pop();auto it = edges[k];d[it] --;if(d[it] == 0) q.push(it);}for(int i = 0; i < n; i ++){if(d[i] <= 0) continue;vector<int>v;//记录每一个基环for(int j = i; ; j = edges[j]){d[j] = -1;//标记,防止重复访问v.push_back(j);if(edges[j] == i) break;}for(auto it : v){dfs(dfs, it, v.size());}}return ans;}
};
http://www.dtcms.com/a/180555.html

相关文章:

  • openssl中BIO的使用
  • 在欧拉系统(openEuler)上安装 MySQL 8
  • OpenCV播放摄像头视频
  • 2025年城市规划与互联网技术国际会议(ICUPIT 2025)
  • 生产安全管理系统标杆
  • 【高级IO】多路转接之单线程Reactor
  • Spring Cloud 以Gateway实现限流(自定义返回内容)
  • DVWA靶场保姆级通关教程--06不安全验证机制
  • 安全核查基线-1.LPD服务
  • 构筑芯片行业的“安全硅甲”
  • 教育+AI:个性化学习能否颠覆传统课堂?
  • 游戏引擎学习第266天:添加顶部时钟概览视图。
  • CSS实现图片垂直居中方法
  • 利用GPT实现油猴脚本—网页滚动(优化版)
  • CSS flex:1
  • C23 与 MISRA C:2025:嵌入式 C 语言的进化之路
  • 计算机视觉与深度学习 | 视觉+激光雷达+惯惯性SLAM算法汇总(原理,公式,代码)
  • JDK8 HashMap红黑树退化为链表的机制解析
  • 为人类文明建一座“永不遗忘”的数字博物馆:Funes 技术解析
  • 【计算机视觉】Car-Plate-Detection-OpenCV-TesseractOCR:车牌检测与识别
  • 在 MyBatis 中实现控制台输出 SQL 参数
  • java学习笔记
  • AI客服问答自动生成文章(基于deepseek实现)
  • ABB电机保护单元通过Profibus DP主站转Modbus TCP网关实现上位机通讯
  • Vulnhub Lazysysadmin靶机攻击实战(一)
  • 硬链接与软连接
  • 如何从极狐GitLab 容器镜像库中删除容器镜像?
  • Bitcoin跨链协议Clementine的技术解析:重构DeFi生态的信任边界
  • 自然语言处理-词性标注的基本概念
  • requests库