首页 > 代码库 > 并查集模板
并查集模板
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 int N,M,fa[10005]; 8 int find(int ); 9 10 void pt(int x,int y)11 {12 int faa=find(x);13 int fbb=find(y);14 if(faa==fbb)printf("Y\n");15 else printf("N\n");16 }17 18 int find(int x)19 {20 int r=x;21 while( fa[r]!=r )r=fa[r];22 while(x!=r){23 x=fa[x];24 fa[x]=r;25 }26 return r;27 }28 29 void ADD( int X , int Y )30 {31 int faa=find(X);32 int fbb=find(Y);33 if( faa != fbb ){34 fa[faa]=fbb;35 }36 }37 38 void init()39 {40 int X,Y,Z;41 cin>>N>>M;42 for(int i=1;i<=N;i++){43 fa[i]=i;44 }45 for(int j=1;j<=M;j++){46 scanf("%d%d%d",&Z,&X,&Y);47 if(Z==1)ADD( X , Y );48 if(Z==2)pt( X , Y );49 }50 }51 52 int main()53 {54 init();55 return 0;56 }
洛谷3367:http://www.luogu.org/problem/show?pid=3367
并查集模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。