【模板】并查集

来源:互联网 发布:怎么在手机淘宝买彩票 编辑:程序博客网 时间:2024/06/05 21:53
#include<cstdio>using namespace std;int n,m,father[200001];int find(int x){    if (father[x]!=x) return father[x]=find(father[x]);    return father[x];}void unionn(int x,int y){    int xx=find(x);    int yy=find(y);    if (xx!=yy) father[xx]=yy;}bool judge(int x,int y){    return find(x)==find(y);}int main(){    scanf("%d%d",&n,&m);    for (int i=1; i<=m; i++) father[i]=i;    for (int i=1; i<=m; i++)    {        int p,x,y;        scanf("%d%d%d",&p,&x,&y);        if (p==1) unionn(x,y);        else{if (judge(x,y)) printf("Y\n");            else printf("N\n");        }    }    return 0;}/*4 72 1 21 1 22 1 21 3 42 1 41 2 32 1 4NYNY*/
原创粉丝点击