基环树的 dfs 找环

基环树 dfs 找环

void dfs(int u){
    dfn[u]=++idx;
    for(int i=head[u];i;i=e[i].nxt){
        int v=e[i].v;
        if(v==fa[u]) continue;
        if(!dfn[v]) fa[v]=u,dfs(v);
        else{if(dfn[v]<dfn[u])continue;G[++g]=v;for(;v^u;v=fa[v])G[++g]=fa[v];}
    } 
    return;
}
posted @ 2022-04-13 16:50  Gym_nastics  阅读(258)  评论(2编辑  收藏  举报