码迷,mamicode.com
首页 > 其他好文 > 详细

旅游规划(25)

时间:2015-06-11 22:31:57      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

这道题一开始我用dfs写了一次 = = 结果时间超限

对于这种最短路径的问题来讲,效率更高的肯定是Floyd算法和Dijkstra算法

单源最短路径最好自然是用Dijkstra,不过Floyd写起来简单,我就这样写咯

#include <iostream>
#define INF 99999
using namespace std;

int n, m, s, d;
int map[500][500];
int price[500][500];

int main()
{
    /*纯洁的初始化!*/
    cin >> n >> m >> s >> d;
    for (int i = 0; i < 500; i++){
        for (int j = 0; j < 500; j++){
            map[i][j] = price[i][j] = INF;
        }
    }
    for (int i = 0; i < m; i++){
        int w, x, y, z;
        cin >> x >> y >> z >> w;
        map[x][y] = map[y][x] = z;
        price[x][y] = price[y][x] = w;
    }
    // Floyd Algorithm
    for (int k = 0; k < n; k++){
        for (int i = 0; i < n; i++){
            for (int j = 0; j < n; j++){
                if (map[i][j] > map[i][k] + map[k][j]){
                    map[i][j] = map[i][k] + map[k][j];
                    price[i][j] = price[i][k] + price[k][j];
                }
                else if (map[i][j] == map[i][k] + map[k][j]){
                    if (price[i][j] >price[i][k] + price[k][j]){
                        price[i][j] = price[i][k] + price[k][j];
                    }
                }
            }
        }
    }
    cout << map[s][d] << " " << price[s][d];
}

 

旅游规划(25)

标签:

原文地址:http://www.cnblogs.com/zhouyiji/p/4570232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!