Maruf_Hasan

1208NafisShahriar

Jan 30th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define pb push_back
  5. #define ll long long
  6. #define pii pair<int,int>
  7. #define pll pair<ll,ll>
  8. //#define M 100007
  9. #define INF 1e9
  10. #define INFL 1e18
  11. #define PI acos(-1)
  12. #define mp make_pair
  13. #define fast_in_out ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  14.  
  15. #include<bits/stdc++.h>
  16. using namespace std;
  17. #define M 10000
  18.  
  19. #define ll long long
  20. ll pr[M];
  21.  
  22. struct edge
  23. {
  24. long long u,v,w;
  25. bool operator<(const edge& p)const
  26. {
  27. return w<p.w;
  28. }
  29. };
  30.  
  31. ll par[10005];
  32. vector<edge>e;
  33.  
  34. ll findp(ll v)
  35. {
  36. if(par[v]==v)
  37. return v;
  38. return par[v]=findp(par[v]);
  39. }
  40.  
  41. void mst(ll n)
  42. {
  43. sort(e.begin(),e.end());
  44. for(ll i=0;i<=n;i++)
  45. {
  46. par[i]=i;
  47. }
  48. ll cnt=0;
  49. for(ll i=0;i<e.size();i++)
  50. {
  51. ll u,v;
  52. u=(findp(e[i].u));
  53. v=(findp(e[i].v));
  54. if(u!=v)
  55. {
  56. char a,b;
  57. a=e[i].u+'A';
  58. b=e[i].v+'A';
  59. if(a>b)
  60. swap(a,b);
  61. int c=e[i].w;
  62. cout<<a<<'-'<<b<<' '<<c<<endl;
  63. par[u]=v;
  64. cnt++;
  65. }
  66. if(cnt==n-1)
  67. break;
  68. }
  69. }
  70.  
  71. int main()
  72. {
  73. ll t;
  74. cin>>t;
  75. for(ll i=1;i<=t;i++)
  76. {
  77. ll n,m=0;
  78. cin>>n;
  79. e.clear();
  80. for(ll j=0;j<n;j++)
  81. {
  82. for(ll k=0;k<n;k++)
  83. {
  84. ll w;
  85. cin>>w;
  86. getchar();
  87. if(k>j && w>0)
  88. {
  89. m++;
  90. edge get;
  91. get.u=j;
  92. get.v=k;
  93. get.w=w;
  94. e.pb(get);
  95. }
  96. }
  97. }
  98. cout<<"Case "<<i<<":"<<endl;
  99. mst(m);
  100. }
  101.  
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment