fork download
  1. #include<stdio.h>
  2. #define MAX 1000009
  3. typedef long long ll;
  4. ll parent[MAX];
  5. ll rank[MAX];
  6. ll find(ll a)
  7. {
  8. while(a!=parent[a])
  9. a=parent[a];
  10. return a;
  11. }
  12. void uni(ll a,ll b)
  13. {
  14. a=find(a);
  15. b=find(b);
  16. if(rank[a]==rank[b])
  17. {
  18. parent[a]=b;
  19. rank[b]++;
  20. }
  21. else if(rank[a]>rank[b])
  22. parent[b]=a;
  23. else
  24. parent[a]=b;
  25. }
  26. void set_zero()
  27. {
  28. for(int i=0;i<MAX;i++)
  29. parent[i]=i,rank[i]=0;
  30. }
  31. int main()
  32. {
  33. ll test,n,c,a,b,q;
  34. scanf("%lld",&test);
  35. while(test--)
  36. {
  37. set_zero();
  38. scanf("%lld%lld",&n,&c);
  39. while(c--)
  40. {
  41. scanf("%lld%lld",&a,&b);
  42. uni(a,b);
  43. }
  44. scanf("%lld",&q);
  45. while(q--)
  46. {
  47. scanf("%lld%lld",&a,&b);
  48. if(find(a)==find(b))
  49. printf("Yes\n");
  50. else
  51. printf("No\n");
  52. }
  53. }
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 17680KB
stdin
1
7 5
1 2
1 5
1 4
2 4
6 7
5
1 4
2 3
6 7
7 4
5 4

stdout
Yes
No
Yes
No
Yes