Maruf_Hasan

1208Final

Jan 31st, 2020
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 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. vector<edge>e,tree;
  31. long long root(long long i)
  32. {
  33. while(pr[i]!=i)
  34. {
  35. i=pr[i];
  36. }
  37. return i;
  38. }
  39.  
  40.  
  41. void mst(ll n)
  42. {
  43. sort(e.begin(),e.end());
  44. for(int i=0;i<=n;i++)
  45. pr[i]=i;
  46. int cnt=0,s=0;
  47. for(int i=0;i<e.size();i++)
  48. {
  49. ll u=root(e[i].u);
  50. ll v=root(e[i].v);
  51. if(u!=v)
  52. {
  53. pr[u]=v;
  54. cnt++;
  55. char a=e[i].u+'A';
  56. char b=e[i].v+'A';
  57. ll c=e[i].w;
  58. if(a>b)
  59. swap(a,b);
  60. cout<<a<<'-'<<b<<' '<<c<<endl;
  61. if(cnt==n-1)
  62. break;
  63. }
  64. }
  65.  
  66. }
  67.  
  68.  
  69. int myfunc(char c[])
  70. {
  71. int num=0;
  72. for(int i=0;i<strlen(c);i++)
  73. {
  74. num=num*10+(c[i]-'0');
  75. }
  76. return num;
  77. }
  78.  
  79.  
  80. int main()
  81. {
  82.  
  83. fast_in_out;
  84. int t,kase=0;
  85. cin>>t;
  86. while(kase<t)
  87. {
  88.  
  89. int n;
  90. cin>>n;
  91. vector<int>v[n+5];
  92. for(int i=0;i<n;i++)
  93. {
  94. char str[10000];
  95. gets(str);
  96. char *token=strtok(str," ,");
  97. while(token!=NULL)
  98. {
  99. int num=myfunc(token);
  100. v[i].pb(num);
  101. token=strtok(NULL," ,");
  102. }
  103. }
  104.  
  105. for(int i=0;i<n;i++)
  106. {
  107. for(int j=0;j<v[i].size();j++)
  108. {
  109. if(v[i][j]!=0)
  110. {
  111.  
  112. edge E;
  113. E.u=i;
  114. E.v=j;
  115. E.w=v[i][j];
  116. e.pb(E);
  117. }
  118. }
  119. }
  120. cout<<"Case "<<kase+1<<":"<<endl;
  121. mst(n);
  122. kase++;
  123. e.clear();
  124. }
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment