一种简单实现并查集;类封装,如果可以动态地开辟就较好一点#include<iostream>usingnamespacestd;/*对与n个元素间是否有关系请自动将1-n序列一一与之对应下面进行数组操作*/#definen10//本例最大10元素间判断inta[n];/*structer{intx,y;er(intxx,intyy){x=xx;y=yy;}er(){}//注意这一点};voidseg(erdata[],intm){for(inti=0;i<n;i++)a[i]=-1;for(inti=0;i<m;i++){a[data[i].x]-=1;a[data[i].y]=data[i].x;}}intfind(intx,inty){if(a[x]==a[y]&&a[x]!=-1)return1;if(a[y]==x)return1;if(y==a[x])return1;return0;}voidtest(){erdata[5]={{0,1},{0,2},{0,3},{4,5}};seg(data,4);cout<<find(1,2)<<endl;}*/classbd{public:inta[n];bd(){for(inti=0;i<n;i++)a[i]=-1;}voidset(intx,inty){a[x]--;a[y]=x;}intfind(intx,inty){if(a[x]==a[y]&&a[x]!=-1)return1;if(a[y]==x)return1;if(y==a[x])return1;return0;}};intmain(){bds;s.set(0,1);s.set(0,2);s.set(0,3);s.set(4,5);cout<<s.find(0,1)<<endl;cout<<s.find(1,2)<<endl;cout<<s.find(0,4)<<endl;cout<<s.find(4,5)<<endl;cout<<"1,1,0,1"<<endl;return0;}