Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int n,m,c[100][100],infinit,d[100][100];
  6.  
  7.  
  8. void citire()
  9. {
  10. int x,y,cost;
  11. ifstream f("graf.txt");
  12. f>>n>>m;
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. {
  16. f>>c[i][j];
  17.  
  18. }
  19. f>>infinit;
  20. for(int i=1;i<=n;i++)
  21. for(int j=1;j<=n;j++)
  22. if(i!=j && c[i][j]==0)
  23. c[i][j]=infinit;
  24.  
  25. }
  26.  
  27. void drum_initial()
  28. {
  29. for(int i=1;i<=n;i++)
  30. for(int j=1;j<=n;j++)
  31. {
  32. if(i!=j && c[i][j]!= infinit)
  33. d[i][j]=i;
  34. if(i!=j && c[i][j]==infinit)
  35. d[i][j]=infinit;
  36. }
  37. }
  38.  
  39. void Floyd()
  40. {
  41. for(int k=1;k<=n;k++)
  42. for(int i=1;i<=n;i++)
  43. for(int j=1;j<=n;j++)
  44. if(c[i][j]>c[i][k]+c[k][j])
  45. {
  46. c[i][j]=c[i][k]+c[j][k];
  47. d[i][j]=k;
  48. }
  49. }
  50.  
  51. void drum(int i, int j)
  52. {
  53. if(i==j)
  54. cout<<i<<" ";
  55. else
  56. {
  57. drum(i,d[i][j]);
  58. cout<<j<<" ";
  59.  
  60. }
  61. }
  62.  
  63. void afisare_standard()
  64. {
  65. for(int i=1;i<=n;i++)
  66. {
  67. for(int j=1;j<=n;j++)
  68. cout<<c[i][j]<<" ";
  69. cout<<endl;
  70. }
  71. }
  72.  
  73. void afisare()
  74. {
  75. int i,j;
  76. for(i=1;i<=n;i++)
  77. for(j=1;j<=n;j++)
  78. if(i!=j)
  79. if(c[i][j]!=infinit)
  80. {
  81. cout<<"costul de la "<<i<<" la "<<j<<" este "<<c[i][j]<<" "<<endl;
  82. cout<<"drumul este:";
  83. drum (i,j);
  84. cout<<endl;
  85.  
  86. }
  87. else cout<<"Nu exista drum de la "<<i<<" la "<<j<<endl;
  88.  
  89. }
  90.  
  91. int main()
  92. {
  93. int i,j,minim=INT_MAX;
  94. citire();
  95.  
  96. drum_initial();
  97.  
  98. Floyd();
  99. int suma[100];
  100. for(i=1;i<=n;i++)
  101. { s[i]=0;
  102. for(j=1;j<=n;j++)
  103. if(c[i][j]!=infinit)
  104. s[i]=s[i]+c[i][j];
  105. if(s[i]<minim)minim=s[i];
  106. }
  107. afisare();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement