【基环树简介】
● 众所周知,树上没有环。一棵树由 n 个结点及 n−1 条边构成。
● 基环树是由 n 个结点及 n 条边组成的连通图。
显然,基环树上存在环。因此,基环树本质上不是树,而是图。基环树又称章鱼图。
基环树的的特别之处就在于这个环,因此,大部分基环树题目中,找环是十分必要的。
(1)“简单图”找环代码
void getloop(int u) {dep[u]=dep[fa[u]]+1;for(auto t:e[u]) {if(t==fa[u]) continue;if(!dep[t]) {fa[t]=u;getloop(t);} else if(dep[t]<dep[u]) {int i=u;while(1) {st[i]=1;//loop[++idx]=i;if(i==t) break;i=fa[i];}}}
}
(2)“重边图”找环代码
void getloop(int u,int v) {dep[u]=dep[fa[u]]+1;for(auto t:e[u]) {int fi=t.first,se=t.second; if(se==v) continue;if(!dep[fi]) {fa[fi]=u;getloop(fi,se);} else if(dep[fi]<dep[u]) {int i=u;while(1) {st[i]=1;//loop[++idx]=i;if(fi==v) break;i=fa[i];}}}
}
● 有向基环树
有向基环树分为内向基环树和外向基环树。
内向基环树,每个结点出度为 1;外向基环树,每个结点入度为 1。
● 基环树森林
多棵树可以组成一个森林,多棵基环树可以组成基环树森林。
多棵外向基环树可以组成外向基环树森林,多棵内向基环树可以组成内向基环树森林。
【参考文献】
https://www.cnblogs.com/pure4knowledge/p/18211724
https://www.cnblogs.com/yifan0305/p/17506679.html
https://blog.csdn.net/ZhuRanCheng/article/details/131736222
https://blog.csdn.net/hnjzsyjyj/article/details/140716866