题目描述
第一行,三个数,X,N,M
X 表示出现的星系代号的最大值;
N 表示有 N 个星际跳跃门;
M 表示有 M 个任务。
接下来的 N 行描述每个星际跳跃门:每行为两个数字(星系代号),
星际跳跃门连通这两个星系(星际跳跃门是可以双向通行的)
;
接下来的 M 行表示每个任务需要到达的星系,每个任务需要到达两
个星系。
思路
并查集一下就可以了
#includeint f[10000]; int find(int x) { if (!f[x]) return x; f[x]=find(f[x]); return f[x]; } int insert(int x,int y) { if (find(x)!=find(y)) { f[find(x)]=find(y); return 1; } return 0; } int main() { int x,n,m; scanf("%d%d%d",&x,&n,&m); for (int i=1;i<=n;i++) { int l,r; scanf("%d%d",&l,&r); insert(l,r); } for (int i=1;i<=m;i++) { int l,r; scanf("%d%d",&l,&r); if (find(l)==find(r)) printf("Yes\n"); else printf("No\n"); } }
Comments NOTHING