UOJ Logo heqingyu的博客

博客

洛谷P3367

2017-10-12 12:51:05 By heqingyu

并查集模板。。。有些语句十分神奇,能够一句话完成一个操作。。

如果你不会并查集算法的话,可以去网上搜一下。。。

include

using namespace std;

int n,m,z,x,y,fa[100010];

int getfa(int x){return x==fa[x]?x:fa[x]=getfa(fa[x]);} //压缩版的getfather函数。。。加了优化(路径压缩)

int main(){

scanf("%d%d",&n,&m);

for(int i=1;i<=n;i++)fa[i]=i;// 初始所有点的father都是自己

for(int i=1;i<=m;i++){

    scanf("%d%d%d",&z,&x,&y);

    if(z==1){fa[getfa(x)]=getfa(y);}//压缩,神奇

    else{

    if(getfa(x)==getfa(y)) puts("Y");//判断祖先相不相同,如果相同,则是同一集合内的,输出Y

    else puts("N");

    }

}

return 0;

}

评论

zhanjinghao
@heqinyu dalao
  • 2017-10-18 17:56:15