并查集模板


int find(int x) {
    int p = x, t;
    while (fa[p] >= 0) p = fa[p];
    while (x != p) {
        t = fa[x];
        fa[x] = p;
        x = t;
    }
    return x;
}
void union(int x, int y) {
    if ((x = find(x)) == (y = find(y))) return;
    if (fa[x] < fa[y]) {
        fa[x] += fa[y];
        fa[y] = x;
    } else {
        fa[y] += fa[x];
        fa[x] = y;
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • codinRay阅读 553评论 0 0
  • 并查集原理我将举一个更有爱的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑...
    扎Zn了老Fe阅读 565评论 0 0
  • 每次加班回家的路上,都能看到大街小巷满眼的灯红酒绿,为了告诫自己提高工作效率不再做加班狗,决定做一个霓虹灯背景来警...
    流云逐月阅读 3,740评论 0 9
  • 并没要求有谁能体会 更别善做慈悲 同情才不会给我安慰 走得越近心越像刺猬 不如早就把我向外推 彻底粉碎 在你眼中我...
    扎西拉姆夏目阅读 273评论 0 0
  • 小时候,我好像是生活在我姐姐的阴影中…… 她漂亮、高挑、开朗,一到哪里永远是银铃般的笑声、众星捧着的那个月亮!从小...
    半亩方塘_阅读 666评论 0 0