Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // Input:
- // 3
- // 0 0
- // 1 2 120 120 5
- // 4 5 120 100 21
- // 6 8 150 180 23
- // 100 100
- // Output:
- // 48
- int n, m, c;
- int x[12], y[12]; // 12 = 2*5 + 2 since n <= 5
- int dist[12][12];
- int cal_dist(int i, int j){
- int sum = (x[i] > x[j]) ? (x[i]-x[j]) : (x[j]-x[i]);
- sum += (y[i] > y[j]) ? (y[i]-y[j]) : (y[j]-y[i]);
- return sum;
- }
- int main() {
- cin>>n;
- m = 2*(n + 1);
- for(int i=0; i<m; ++i)
- for(int j=0; j<m; ++j)
- dist[i][j] = 9999;
- cin>>x[0]>>y[0];
- for(int i=1; i<=n; ++i){
- cin>>x[i]>>y[i]>>x[i+n]>>y[i+n]>>c;
- dist[i][i+n] = c;
- dist[i+n][i] = c;
- }
- cin>>x[m-1]>>y[m-1];
- for(int i=0; i<m; ++i)
- for(int j=0; j<m; ++j)
- dist[i][j] = min(dist[i][j], cal_dist(i, j));
- for(int k=0; k<m; ++k)
- for(int i=0; i<m; ++i)
- for(int j=0; j<m; ++j)
- dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
- cout<<dist[0][m-1];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement