洛谷 3367_[模版] 并查集

发布于 2019-04-29  875 次阅读


题目大意

有一个并查集,你需要完成合并和查询操作。


#include 
#define max 100000
int f[max+1];
int find(int x)
{
    if (!f[x]) return x;
    f[x]=find(f[x]);
    return f[x];
}
int insert(int x,int y)
{
    if (find(x)!=find(y))
    {
        f[find(x)]=find(y);
        return 1;
    }
    return 0;
}
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    for (int i=1;i<=n;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        if (x==1) insert(y,z);
        else if (x==2)
        {
            if (find(y)==find(z))
                printf("Y\n");
            else printf("N\n");
        }
    }
}
]]>