主页 > 游戏开发  > 

2.数据结构:3.合并集合

2.数据结构:3.合并集合

原题链接

#include<algorithm> #include<cstring> #include<iostream> using namespace std; const int N=100010; int p[N]; int find(int x){ if(p[x]!=x){ p[x]=find(p[x]); } return p[x]; } int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ p[i]=i; } while(m--){ char op[2]; int a,b; cin>>op>>a>>b; if(op[0]=='M'){ if(find(p[a])!=find(p[b])){ p[find(a)]=find(b); } }else{ if(find(a)==find(b)){ puts("Yes"); }else{ puts("No"); } } } return 0; }

维护每个点的根节点,合并是修改根节点,查询也是比较根节点。

标签:

2.数据结构:3.合并集合由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“2.数据结构:3.合并集合