1 条题解
-
3
这道并查集好像没有题解啊 那么废话不多说直接上题解
#include <bits/stdc++.h> using namespace std; int a[200005]; int find(int x) { if(a[x]==x) return x;//如果自己就是祖先返回自己 return a[x]=find(a[x]);//否则继续找自己的祖先,这里直接把这个节点连到祖先 } int main() { int n, m, p, x, y; cin>>n>>m; for(int i=1; i<=n; i++) a[i]=i;//赋值自己就是自己的祖先 for(int i=0; i<m; i++) { cin>>p>>x>>y; if(p==1) a[find(x)]=a[find(y)];//连接祖先 else { if(a[find(x)]==a[find(y)]) cout<<"Y"; else cout<<"N"; cout<<endl; }//一个简单的判断 } return 0; }
本人不才如有问题不要勿喷
- 1
信息
- ID
- 382
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 152
- 已通过
- 87
- 上传者