• Til the Cows Come Home(spfa做法)


    题目
    题目描述
    贝茜在谷仓外的农场上,她想回到谷仓,在第二天早晨农夫约翰叫她起来挤奶之前尽可能多地睡上一觉.由于需要睡个好觉,贝茜必须尽快回到谷仓.农夫约翰的农场上有N(2≤N≤1000)个路标,每一个路标都有唯一的编号(1到N).路标1是谷仓,路标N是贝茜一整天呆在那里的果树园.农场的所有路标之间共有T(1≤T≤2000)条不同长度的供奶牛走的小路(无方向).贝茜对她识别方向的能力不是很自信,所以她每次总是从一条小路的头走到尾,再以这条路的尾作为下一条路的头开始走.  现给出所有路标之间的小路,要求输出贝茜回到谷仓的最短路程(每组输入数据都保证有解).
    输入
    第1行:2个整数T和N.
    第2到T+1行:每行用空格隔开的三个整数描述一条小路.前两个整数是这条小路的尾和头,
    第三个整数是这条小路的长度(不大于100).
    输出
    一个整数,表示贝茜从路标N到路标1所经过的最短路程
    样例输入
    5 5
    1 2 20
    2 3 30
    3 4 20
    4 5 20
    1 5 100
    样例输出
    90

    分析
    spfa裸题。
    链式前向星存图,spfa跑一遍完事。
    上代码。

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    using namespace std;
    const int N = 10010;
    const int M = 40010;
    int n, m;
    int head[N], nex[M], to[M], val[M], ce;
    void add(int u, int v, int w) {
        to[++ce] = u; nex[ce] = head[v]; head[v] = ce; val[ce] = w;
        to[++ce] = v; nex[ce] = head[u]; head[u] = ce; val[ce] = w;
    }
    int d[N];
    bool used[N];
    queue<int> q;
    void spfa(int s) {
        memset(d, 0x3f, sizeof d);
        d[s] = 0;
        q.push(s);
        used[s] = true;
        while(!q.empty()) {
            int u = q.front(); q.pop();
            used[u] = false;
            for(int i=head[u]; i; i=nex[i]) {
                int v = to[i], w = val[i];
                if(d[u] + w < d[v]) {
                    d[v] = d[u] + w;
                    if(!used[v]) {
                        used[v] = true;
                        q.push(v);
                    }
                }
            }
        }
    }
    int main() {
        scanf("%d%d", &m, &n);
        for(int i=1; i<=m; i++) {
            int u, v, w;
            scanf("%d%d%d", &u, &v, &w);
            add(u, v, w);
        }
        spfa(1);
        printf("%d
    ", d[n]);
        return 0;
    }



  • 相关阅读:
    事务
    排序算法
    二维数组中的查找
    在Linux中安装Matlab
    null和“”的区别
    【学习笔记】〖九度OJ〗题目1433:FatMouse
    【学习笔记】〖九度OJ〗题目1464:Hello World for U
    year:2017 month:8 day:1
    year:2017 month:07 day:31
    year:2017 month:7 day:27
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10325949.html
Copyright © 2020-2023  润新知