首页 > 其他分享 >基环树

基环树

时间:2023-11-28 21:35:30浏览次数:28  
标签:扣环 处理 基环树 int cly 环套

基环树

转载请注明出处,部分内容引自 cly_none 大神的博文。

基环树,也是环套树,简单地讲就是在树上再加一条边。它形如一个环,环上每一个点都有一颗子树的形式。因此,对基环树的处理大部分就是对树处理和对环处理。显然,难度在于后者。

扣环

这是几乎所有基环树处理的第一步。扣环的方式多种多样,各有千秋,反正都是 O(n) 的。

 

struct edge{
    int nxt,to,w;
}e[N<<1];
int tot,cnt,rt;
int fir[N],vis[N],lop[N],dist[N],inl[N];
int getlop(int u,int fa){
    if(vis[u]){
        rt=u;return 1;
    }
    vis[u]=1;
    int tmp;
    for(int i=h[u];i;i=e[i].nxt){
        if(e[i].to==fa) continue;
        if(tmp=getlop(e[i].to,u),tmp){
            if(tmp==1){
                lop[++cnt]=u;
                dist[cnt]=e[i].w;
                inl[u]=1;
                if(u!=rt) return 1;
            }
            return 2;
        }
    }
    return 0;
}
View Code

 

标签:扣环,处理,基环树,int,cly,环套
From: https://www.cnblogs.com/buleeyes/p/17863109.html

相关文章

  • 第 365 场周赛 (依赖树, 环形滑动窗口,内向基环树)
    本题可以发现一些枚举的技巧,在枚举多个值的时候,自己有时候脑袋晕晕的,会把变量的更新顺序搞混,此时,可以用依赖树来解决。如同本题:classSolution:defmaximumTripletValue(self,nums:List[int])->int:res=pre_max=pre_dif=0forxinnums:......
  • 基环树学习指南
    基环树学习指南前置芝士一个图中包含n个点n条边,且图中只存在一个环,这样的图被称为基环树(环套树)。基环树比树多了一条边,从而形成了一个环。基环树可以看做以坏点为根的一颗颗子树构成。三大分类基环无向树基环内向树(每个点有且只有一条出边)基环外向树(每一个点只有一条入边)[......
  • 骑士:基环树
    https://www.bilibili.com/video/BV1Aa411Q7qp/?spm_id_from=333.999.0.0&vd_source=23dc8e19d485a6ac47f03f6520fb15c2董老师讲的很清楚https://www.luogu.com.cn/problem/P2607 思路:1、深搜找环2、断环成树,对树深搜计算(断边:标记端点或者标记边)O(N)单向边://LuoguP2......
  • 【基环树 | 题解】P5022 [NOIP2018 提高组] 旅行
    前言一日知基环树弱,固补题。关于基环树基环树定义一个环,环上每个点都有一颗以该点为根的树,如下图为一棵基环树关于基环树常规思路通常来说基环树常规思路是先处理环上树的结果,后通过树的结果来处理换上结果。具体处理方式依照题目来定。然而只是通常来说因为基环树的问......
  • 10.4 国庆 环形dp与基环树笔记
    1.知识点环形dp环形dp的概念•环形dp与基环树在许多环形结构的问题中,我们可以在环中从某个位置把环断开,把这个环变成线性的,然后进行\(dp\)等操作。•把能通过上述操作解决的环形问题称作"可拆解的环形问题"。环形dp的两种策略•第一次在任意位置把环断开成链,按照......
  • LeetCode 周赛上分之旅 #49 再探内向基环树
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......
  • 【学习笔记】(28) 基环树
    首先,严格地讲,基环树不是树,它是一张有\(n\)个节点、\(n\)条边的图。介绍无向图上的基环树有向图上的基环树内向树出度为1外向树入度为1流程找到唯一的环;对环之外的部分按照若干棵树处理;考虑与环一起计算。找环从任意一点开始搜索;每次拓展到的点涂为灰色,回......
  • 基环树问题 解题报告
    luoguP5022旅行题意对于60%的数据,给一棵树,求一条字典序最小的Hamilton路径;对于40%的数据,给一颗基环树,求一条字典序最小的Hamilton路径。分析前向星存图,对于每个点的出边排序,从1开始dfs一遍即可过60%数据;对于基环树,由于Hamilton路径在树上必然有一条边不经过,而这条边必然......
  • 代码源 - 基环树
    ZJOI2008骑士自己写的时候建的是\(dls\)的反图,想的是基环树不是要保证每个点的出度为\(1\),就选择每个点向仇恨点连接一条有向边.这种情况下如果记录每一个点出度指向哪,那么在找环的时候不一定能找到,因为图上带环的话要根据入度点找环(画图理解)如果记录入度......
  • 基环树
    基环树简单无向图有n个点n-1条边,那么它们会连成一条直线n个点n条边,相对多一条边,有且仅有一个环可以利用拓扑排序找这个环例题:F-Well-definedPathQueriesonaNamori#include<bits/stdc++.h>usingnamespacestd;constintMAXN=2e5+10,MAXM=2e5+10;intn,q;......