并查集
#include<iostream> #include<cstdio> using namespace std; int Ancestors[1500];//存储祖先节点; int ances(int i)//搜寻祖先节点; { if(Ancestors[i]!=i) Ancestors[i]=ances(Ancestors[i]); return Ancestors[i]; } int main() { int m,n,i; cin>>m>>n; for(i=1;i<=m;++i) Ancestors[i]=i; for(i=1;i<=n;++i) { int x,y; cin>>x>>y; x=ances(x); y=ances(y); if(x!=y) Ancestors[x]=y; } int q; cin>>q; while(q--) { int x,y; cin>>x>>y; if(Ancestors[x]==Ancestors[y]) cout<<"Yes!"<<endl; else cout<<"No!"<<endl; } }
为什么要过别人为我安排的生活.