今晚取快递的题目

今晚取快递题目,自己的想法,不知道对不对,我能说没来得及提交吗。。。。

#include <iostream>

#include <limits.h>

#include <vector>

using namespace std;


int n, m, s, t, min = INT_MAX, b[100000], e[100000], len[100000];



void route(bool history[10000], int length, int s, int t) {

    if (s == t) {    //如果已经来到了终点,就更新一下最短路径长

        if (length < min) min = length; 

        return;

    }

    for (int i = 0; i < n; i++) {

        if (b[i] == s && !history[e[i]]) {    //起点为b[i],并且终点e[i]没有遍历过,那就遍历一下

            history[e[i]] = true;    //将e[i]遍历过的信息带到下一层去

            route(history, length + len[i], e[i], t);    //顺便带上这次遍历的路径长度

        }

    }

}


int main() {

    cin >> n >> m >> s >> t;

    for (int i = 0; i < m; i++) {

        cin >> b[i] >> e[i] >> len[i];

    }

    bool history[10000] = { false };

    int sum = 0;

    route(history, 0, s, t); sum += min; min = INT_MAX; //min初始化,再计算一次回来的

    route(history, 0, t, s); sum += min;

    cout << sum << endl;

}

#笔试题目#
全部评论
acm选手的我表示这题是裸的最短路。。。。。。
点赞 回复 分享
发布于 2018-05-23 23:08

相关推荐

01-18 09:26
已编辑
门头沟学院 Java
王桑的大offer:建议中间件那块写熟悉即可,写掌握 面试包被拷打到昏厥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务