(洛谷 3367)【模(mú)板】并查集

2019-04-14 21:50发布

class="markdown_views prism-atom-one-light">

分析

其实就是洛谷3366降低了点层次
kruskal模板

代码

#include using namespace std; int fat[10001],n,m; int father(int x){ if (fat[x]==x) return x; else return fat[x]=father(fat[x]); } bool un(bool z,int x,int y){ int fa=father(x);//祖先 int fb=father(y);//祖先 if (fa!=fb){ if (z) fat[fb]=fa;//合并祖先 return 0; } return 1; } int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) fat[i]=i; for (int i=1;i<=m;i++){ int z,x,y; scanf("%d%d%d",&z,&x,&y); if (z==1) un(1,x,y); else if (un(0,x,y)) putchar('Y'); else putchar('N'); if (z==2)putchar(' '); } return 0; }