Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int parent[100001],rnk[100001];
- int root(int u){
- if(parent[u]==u) return u;
- return parent[u]=root(parent[u]);
- }
- void mrg(int u,int v){
- u=root(u);
- v=root(v);
- if(u==v) return ;
- if(rnk[u]>rnk[v]){
- rnk[u]+=rnk[v];
- parent[v]=u;
- }
- else{//rnk[v]>rnk[u]
- rnk[v]+=rnk[u];
- parent[u]=v;
- }
- }
- int main(){
- int n,q,k;
- scanf("%d %d %d",&n,&k,&q);
- for(int i=1;i<=n;i++){
- parent[i]=i;
- rnk[i]=1;
- }
- for(int i=0;i<k;i++){
- int u,v;
- scanf("%d %d",&u,&v);
- mrg(u,v);
- }
- for(int i=0;i<q;i++){
- int u,v;
- scanf("%d %d",&u,&v);
- if(root(u)==root(v)) printf("yes");
- else printf("no");
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement