Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int MAXINT = 1000000007;
  5. int d2[101][101]; // "plus nieskończoność"
  6. int main()
  7. {
  8. // Macierz minimalnych kosztów dojścia
  9. int n,m,x,y,w,kr;
  10. int **d;
  11.  
  12. cin >> n >> kr>> m;
  13. d = new int * [n+1]; // Czytamy liczbę wierzchołków oraz krawędzi
  14.  
  15. // Tworzymy dynamiczną macierz d
  16. for(int i = 1; i <= n; i++)
  17. {
  18. d[i] = new int [n+1]; // Tworzymy wiersz macierzy
  19. for(int j = 1; j <=n; j++)
  20. d[i][j] =INT_MAX; // Wiersz wypełniamy największą liczbą dodatnią
  21. d[i][i] = 0; // Jednakże na przekątnej wpisujemy 0
  22. }
  23.  
  24. for(int i = 1; i <=kr; i++)
  25. {
  26. cin >> x >> y >> w; // Czytamy definicję krawędzi
  27. d[x][y]=min(d[x][y],w);
  28. d[y][x]=min(d[y][x],w); // Wagę krawędzi umieszczamy w macierzy d
  29. }
  30. // Algorytm Floyda-Warshalla
  31.  
  32. for(int k = 1; k <=n; k++)
  33. for(int i = 1; i <=n; i++)
  34. for(int j = 1; j <=n; j++)
  35. {
  36. w = d[i][k] + d[k][j];
  37. if(d[i][j] > w) d[i][j]=min(d[i][j],w),d[j][i]=min(d[i][j],w);
  38. }
  39.  
  40. for(int i=1;i<=m;i++)
  41. {
  42. for (int hh=1; hh<=n; hh++)
  43. {
  44. for (int jj=1; jj<=n; jj++)
  45. d2[hh][jj]=d[hh][jj];
  46. }
  47. cin>>x>>y>>w;
  48. d2[x][y]=w;
  49. d2[y][x]=w;
  50. for(int k=1;k<=n;k++)
  51. {
  52.  
  53. for(int r=1;r<=n;r++)
  54. {
  55. if (d2[k][r] > d2[k][x] + d2[x][y] + d2[y][r])
  56. d2[k][r]=d2[k][x] + d2[x][y] + d[y][r], d2[k][r]=d2[r][x] + d2[x][y] + d[y][r];
  57. if( d2[k][r] > d2[k][y] + d2[y][x] + d2[x][r])
  58. d2[k][r]=d2[k][y] + d2[y][x] + d2[x][r], d2[r][k]=d2[k][y] + d2[y][x] + d2[x][r];
  59. }
  60.  
  61. }
  62. if(d2[1][n]<d[1][n])
  63. {
  64. printf("1\n");
  65. for(int j=1;j<=n;j++)
  66. for(int r=1;r<=n;r++)
  67. {
  68. d[j][r]=d2[j][r];
  69. }
  70.  
  71. }
  72. else
  73. {
  74. printf("0\n");
  75. }
  76.  
  77.  
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement