#include<iostream> #include<cstring> using namespace std; int father[200010]; int n,m,q; int getfather(int); void merge(int,int); bool judge(int,int); void work(); int main() { work(); return 0; } void work() { cin>>n>>m; for(int i=1;i<=n;i++)father[i]=i; int x,y; for(int i=1;i<=m;i++) { cin>>x>>y; merge(x,y); } int q; cin>>q; for(int i=1;i<=q;i++) { cin>>x>>y; if(judge(x,y))cout<<"Yes"<<endl; else cout<<"No"<<endl; } } int getfather(int x) { if(father[x]==x)return x; father[x]=getfather(father[x]); return father[x]; } void merge(int x,int y) { x=getfather(x); y=getfather(y); father[x]=y; } bool judge(int x,int y) { x=getfather(x); y=getfather(y); if(x==y)return 1; else return 0; } /************************************************************** Problem: 2237 User: admin Language: C++ Result: Accepted Time:1360 ms Memory:2856 kb ****************************************************************/