当前位置: 首页 > 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.xdnf.cn/news/364843.html

相关文章:

  • Dp通用套路(闫式)
  • OPENSSL-1.1.1的使用及注意事项
  • Qt 无边框窗口,支持贴边分屏
  • 大某麦演唱会门票如何自动抢
  • 高尔夫基本知识及规则·棒球1号位
  • PHP8报:Unable to load dynamic library ‘zip.so’ 错误
  • Xterminal(或 X Terminal)通常指一类现代化的终端工具 工具介绍
  • 攻防演练 | 关于蓝队攻击研判的3大要点解读
  • 分治算法-leetcode148题
  • archlinux 详解系统层面
  • RISC-V AIA SPEC学习(五)
  • Springboot+Vue+Mybatis-plus-Maven-Mysql项目部署
  • 可编辑56页PPT | 化工行业智慧工厂解决方案
  • nvidia-smi 和 nvcc -V 作用分别是什么?
  • 金贝灯光儿童摄影3大布光方案,解锁专业级童趣写真
  • 智能制造单元系统集成应用平台
  • SAM详解3.1(关于2和3的习题)
  • 学习黑客认识Security Operations Center
  • 雷赛伺服L7-EC
  • 抖音 “碰一碰” 发视频:短视频社交的新玩法
  • Midjourney-V7:支持参考图片头像或背景生成新保真图
  • Spring事务传播行为-实践向
  • 软件确认报告:审查功能、评估标准及推动软件稳定高效运行
  • 【Cesium入门教程】第五课:数据源
  • JAVA学习-练习试用Java实现“一个游戏AI :如井字游戏(Tic-Tac-Toe)的AI对手”
  • 【二】CURL命令解析
  • 报错 <pcl/features/feature_evaluation/feature_evaluation_framework.h> 不存在的解决办法
  • Java中的控制流语句:if、switch、for、foreach、while、do-while
  • Redis 8.0携新功能,重新开源
  • 【Unity】Unity中修改网格的大小和倾斜网格