denis_andrei10

drum

Nov 11th, 2021
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("drum.in");
  4. ofstream fout("drum.out");
  5. int a[1001][1001], l[1001][1001], n, numar;
  6. int drum(int i, int j)
  7. {
  8. int ok=0, k;
  9. for(k=1; k<=n && ok==0; k++)
  10. {
  11. if(a[i][j]==a[i][k]+a[k][j] && k!=i && k!=j)
  12. {
  13. ok=1;
  14. drum(i, k);
  15. drum(k, j);
  16. }
  17. }
  18. if(ok==0)
  19. {
  20. a[numar][j]=l[numar][j];
  21. }
  22. }
  23. void scrie(int inf)
  24. {
  25. fout<<inf;
  26. int i, j;
  27. for(i=1; i<=n; i++)
  28. {
  29. for(j=1; j<=n; j++)
  30. {
  31. cout<<a[i][j]<<' ';
  32. }
  33. cout<<endl;
  34. }
  35. }
  36. int roy_floyd()
  37. {
  38. int k, i, j;
  39. for(k=1; k<=n; k++)
  40. {
  41. for(i=1; i<=n; i++)
  42. {
  43. for(j=1; j<=n; j++)
  44. {
  45. if(a[i][j]>a[i][k]+a[k][j])
  46. {
  47. a[i][j]=a[i][k]+a[k][j];
  48. l[i][j]=l[i][k]+l[k][j];
  49. }
  50. }
  51. }
  52. }
  53. }
  54. int main()
  55. {
  56. int i, j, k, inf;
  57. fin>>n;
  58. memset(a, 10, sizeof(a));
  59. inf=a[0][0];
  60. while(fin>>i>>j)
  61. {
  62. a[i][j]=1;
  63. l[i][j]=1;
  64. }
  65. for(k=1; k<=n; k++)
  66. {
  67. a[k][k]=0;
  68. }
  69. roy_floyd();
  70. for(i=1; i<=n; i++)
  71. {
  72. for(j=1; j<=n; j++)
  73. {
  74. if(a[i][j]!=0 && a[i][j]!=inf)
  75. {
  76. numar=i;
  77. // cout<<i<<' ';
  78. drum(i, j);
  79. //cout<<endl;
  80. }
  81. }
  82. }
  83. scrie(inf);
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. #include<bits/stdc++.h>
  94. using namespace std;
  95. ifstream fin("drum.in");
  96. ofstream fout("drum.out");
  97. int a[1001][1001], l[1001][1001], n, numar;
  98. int drum(int i, int j)
  99. {
  100. int ok=0, k;
  101. for(k=1; k<=n && ok==0; k++)
  102. {
  103. if(a[i][j]==a[i][k]+a[k][j] && k!=i && k!=j)
  104. {
  105. ok=1;
  106. drum(i, k);
  107. drum(k, j);
  108. }
  109. }
  110. if(ok==0)
  111. {
  112. a[numar][j]=l[numar][j];
  113. }
  114. }
  115. void scrie(int inf)
  116. {
  117. fout<<inf;
  118. int i, j;
  119. for(i=1; i<=n; i++)
  120. {
  121. for(j=1; j<=n; j++)
  122. {
  123. cout<<a[i][j]<<' ';
  124. }
  125. cout<<endl;
  126. }
  127. }
  128. int roy_floyd()
  129. {
  130. int k, i, j;
  131. for(k=1; k<=n; k++)
  132. {
  133. for(i=1; i<=n; i++)
  134. {
  135. for(j=1; j<=n; j++)
  136. {
  137. if(a[i][j]>a[i][k]+a[k][j])
  138. {
  139. a[i][j]=a[i][k]+a[k][j];
  140. l[i][j]=l[i][k]+l[k][j];
  141. }
  142. }
  143. }
  144. }
  145. }
  146. int main()
  147. {
  148. int i, j, k, inf;
  149. fin>>n;
  150. memset(a, 10, sizeof(a));
  151. inf=a[0][0];
  152. while(fin>>i>>j)
  153. {
  154. a[i][j]=1;
  155. l[i][j]=1;
  156. }
  157. for(k=1; k<=n; k++)
  158. {
  159. a[k][k]=0;
  160. }
  161. roy_floyd();
  162. for(i=1; i<=n; i++)
  163. {
  164. for(j=1; j<=n; j++)
  165. {
  166. if(a[i][j]!=0 && a[i][j]!=inf)
  167. {
  168. numar=i;
  169. // cout<<i<<' ';
  170. drum(i, j);
  171. //cout<<endl;
  172. }
  173. }
  174. }
  175. scrie(inf);
  176.  
  177. }
  178.  
  179.  
Advertisement
Add Comment
Please, Sign In to add comment