Advertisement
a_pramanik

Union find

Jun 9th, 2016
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include<set>
  2. #include<list>
  3. #include<map>
  4. #include<stack>
  5. #include<string>
  6. #include<cstdio>
  7. #include<cmath>
  8. #include<queue>
  9. #include<vector>
  10. #include<cctype>
  11. #include<cstdlib>
  12. #include<cstring>
  13. #include<iterator>
  14. #include<fstream>
  15. #include<sstream>
  16. #include<numeric>
  17. #include<iostream>
  18. #include<algorithm>
  19. using namespace std;
  20.  
  21. #define pb push_back
  22. #define ll long long int
  23. #define inf 2000000000
  24. #define pi (2.0*acos(0.0))
  25. #define vsort(v) sort(v.begin(),v.end())
  26. #define ull unsigned long long int
  27. #define ff(i,a,n) for(int i=a;i<=n;i++)
  28. #define mem(a, b) memset(a, b, sizeof a)
  29.  
  30. int par[1000];
  31.  
  32. int find(int u){
  33.  
  34. if(par[u]==u)return u;
  35.  
  36. int x = find(par[u]);
  37. par[u] = x;
  38. return x;
  39. }
  40.  
  41. int main()
  42.  
  43. {
  44. int n, m, i, j, k, x, y, q;
  45.  
  46. while(scanf("%d%d", &n, &m)==2){
  47.  
  48. for(i=1; i<=n; i++)par[i]=i;
  49.  
  50. for(i=1; i<=m; i++){
  51. scanf("%d%d", &x, &y);
  52. int x1 = find(x);
  53. int y1 = find(y);
  54. if(x1!=y1){
  55. par[x1]=y1;
  56. }
  57. }
  58.  
  59. scanf("%d", &q);
  60.  
  61. for(i=1; i<=q; i++){
  62. scanf("%d%d", &x, &y);
  63. int a = find(x);
  64. int b = find(y);
  65. if(a==b)printf("Ek e graph e\n");
  66. else printf("Alada graph e\n");
  67.  
  68. }
  69.  
  70. }
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement