fork download
  1. //kruskal
  2. #include<bits/stdc++.h>
  3.  
  4. #define F first
  5. #define S second
  6. #define pb push_back
  7. #define it iterator
  8. #define pq priority_queue
  9. #define mp make_pair
  10. #define PI acos(-1)
  11. #define MAX 10008
  12.  
  13. using namespace std;
  14.  
  15. int parent[MAX], rank[MAX];
  16.  
  17. struct data
  18. {
  19. int u, v, w;
  20. bool operator<(const data& p)const
  21. {
  22. return w>p.w;
  23. }
  24. };
  25.  
  26. int find(int i)
  27. {
  28. if(parent[i]==i)return i;
  29. return parent[i]=find(parent[i]);
  30. }
  31.  
  32. void merge(int x, int y)
  33. {
  34. int rx=find(x);
  35. int ry=find(y);
  36. if(rx!=ry)
  37. {
  38. if(rank[rx]<rank[ry])
  39. {
  40. parent[rx]=ry;
  41. }
  42. else
  43. {
  44. parent[ry]=rx;
  45. }
  46. if(rank[rx]==rank[ry])rank[rx]++;
  47. }
  48. }
  49.  
  50. int main()
  51. {
  52. pq<data> q;
  53. data get;
  54. int n, e, i, count=0, mst=0;
  55. scanf("%d %d", &n, &e);//n=nodes e=edges
  56. for(i=1; i<=n; i++)
  57. {
  58. parent[i]=i;
  59. rank[i]=0;
  60. }
  61. for(i=1; i<=e; i++)
  62. {
  63. int aa,bb,cc;
  64. scanf("%d %d %d", &aa, &bb, &cc);
  65. get.u=aa;
  66. get.v=bb;
  67. get.w=cc;
  68. q.push(get);
  69. }
  70. for(i=1; i<=q.size(); i++)
  71. {
  72. data now=q.top();
  73. q.pop();
  74. if(find(now.u)!=find(now.v))
  75. {
  76. count++;
  77. mst+=now.w;
  78. merge(now.u, now.v);
  79. if(count==n-1)break;
  80. }
  81. }
  82. cout<<mst;
  83. return 0;
  84. }
  85.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘void merge(int, int)’:
prog.cpp:38:12: error: reference to ‘rank’ is ambiguous
         if(rank[rx]<rank[ry])
            ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
prog.cpp:38:21: error: reference to ‘rank’ is ambiguous
         if(rank[rx]<rank[ry])
                     ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
prog.cpp:46:12: error: reference to ‘rank’ is ambiguous
         if(rank[rx]==rank[ry])rank[rx]++;
            ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
prog.cpp:46:22: error: reference to ‘rank’ is ambiguous
         if(rank[rx]==rank[ry])rank[rx]++;
                      ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
prog.cpp:46:31: error: reference to ‘rank’ is ambiguous
         if(rank[rx]==rank[ry])rank[rx]++;
                               ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
prog.cpp: In function ‘int main()’:
prog.cpp:59:9: error: reference to ‘rank’ is ambiguous
         rank[i]=0;
         ^~~~
prog.cpp:15:18: note: candidates are: int rank [10008]
 int parent[MAX], rank[MAX];
                  ^~~~
In file included from /usr/include/c++/6/bits/move.h:57:0,
                 from /usr/include/c++/6/bits/nested_exception.h:40,
                 from /usr/include/c++/6/exception:173,
                 from /usr/include/c++/6/ios:39,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/sstream:38,
                 from /usr/include/c++/6/complex:45,
                 from /usr/include/c++/6/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/6/bits/stdc++.h:52,
                 from prog.cpp:2:
/usr/include/c++/6/type_traits:1482:12: note:                 template<class> struct std::rank
     struct rank
            ^~~~
stdout
Standard output is empty