当前位置: 首页 > 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;}
};

相关文章:

  • 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:车牌检测与识别
  • 稳住外贸基本盘,这个中部大省出手了
  • 公安部部署“昆仑2025”专项工作,严打环食药等领域突出犯罪
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期
  • 首批18位!苏联籍抗日航空英烈信息更新
  • 陕西澄城打造“中国樱桃第一县”:从黄土高原走向海外,年产值超30亿