Advertisement
urmisaha

Samsung-Wormhole

Nov 6th, 2019
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // Input:
  6. // 3
  7. // 0 0
  8. // 1 2 120 120 5
  9. // 4 5 120 100 21
  10. // 6 8 150 180 23
  11. // 100 100
  12.  
  13. // Output:
  14. // 48
  15.  
  16. int n, m, c;
  17. int x[12], y[12];   // 12 = 2*5 + 2 since n <= 5
  18. int dist[12][12];
  19.  
  20. int cal_dist(int i, int j){
  21.     int sum = (x[i] > x[j]) ? (x[i]-x[j]) : (x[j]-x[i]);
  22.     sum += (y[i] > y[j]) ? (y[i]-y[j]) : (y[j]-y[i]);
  23.     return sum;
  24. }
  25.  
  26. int main() {
  27.     cin>>n;
  28.     m = 2*(n + 1);
  29.    
  30.     for(int i=0; i<m; ++i)
  31.         for(int j=0; j<m; ++j)
  32.             dist[i][j] = 9999;
  33.    
  34.     cin>>x[0]>>y[0];
  35.     for(int i=1; i<=n; ++i){
  36.         cin>>x[i]>>y[i]>>x[i+n]>>y[i+n]>>c;
  37.         dist[i][i+n] = c;
  38.         dist[i+n][i] = c;
  39.     }
  40.     cin>>x[m-1]>>y[m-1];
  41.    
  42.     for(int i=0; i<m; ++i)
  43.         for(int j=0; j<m; ++j)
  44.             dist[i][j] = min(dist[i][j], cal_dist(i, j));
  45.            
  46.     for(int k=0; k<m; ++k)
  47.         for(int i=0; i<m; ++i)
  48.             for(int j=0; j<m; ++j)
  49.                 dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
  50.     cout<<dist[0][m-1];
  51.            
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement