码迷,mamicode.com
首页 > 编程语言 > 详细

【LCA】Tarjan离线算法(并查集+dfs)模板

时间:2015-03-07 14:09:36      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

vector <int> Q[N];

int Find(int x)
{
    if(x != fa[x]) return fa[x] = Find(fa[x]);
    return x;
}

void Union(int x, int y)
{
    int fx = Find(x), fy = Find(y);
    if(fy != fx) fa[fy] = fx;
}

void dfs(int u)
{
    anc[u] = u;
    for(int i = head[u]; ~i; i = e[i].next) {
        int v = e[i].v;
        dfs(v);
        Union(u, v);
        anc[Find(u)] = u;
    }
    vis[u] = true;
    int sz = Q[u].size();
    for(int i = 0; i < sz; i++) {
        int v = Q[u][i];
        if(vis[v]) {
            printf("%d\n", anc[Find(v)]);
            return ;
        }
    }
}

【LCA】Tarjan离线算法(并查集+dfs)模板

标签:

原文地址:http://blog.csdn.net/j_sure/article/details/44115839

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!