提出 #74602905


ソースコード 拡げる

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

// 使用 1e18 作为无限大,确保不会越界且足够大
const long long INF = 1e18;

// 定义边的结构体
struct Edge {
    int to;
    long long weight;
};

int main() {
    // 优化标准输入输出的读取速度
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, m;
    if (!(cin >> n >> m)) return 0;

    // 邻接表表示图 (1-based index)
    vector<vector<Edge>> adj(n + 1);
    for (int i = 0; i < m; ++i) {
        int u, v;
        long long c;
        cin >> u >> v >> c;
        // 有向边,从 u 指向 v
        adj[u].push_back({v, c});
    }

    // dist 数组记录从起点到其余各点的最短时间
    vector<long long> dist(n + 1, INF);
    dist[1] = 0;

    // 优先队列(最小堆),存储 pair<当前最短时间, 节点编号>
    // 默认的 priority_queue 是最大堆,所以要加上 greater 变成最小堆
    priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;
    pq.push({0, 1});

    // Dijkstra 算法主循环
    while (!pq.empty()) {
        auto [d, u] = pq.top();
        pq.pop();

        // 懒惰删除(Lazy Deletion):如果拿出的距离大于记录的真实最短距离,说明它是过时的数据
        if (d > dist[u]) continue;

        // 由于所有边权均为正数,第一次从优先队列中取出目标终点时,就已确定是全局最短距离
        if (u == n) break;

        // 遍历所有相邻的节点
        for (const auto& edge : adj[u]) {
            int v = edge.to;
            long long w = edge.weight;

            // 松弛操作 (Relaxation)
            if (dist[u] + w < dist[v]) {
                dist[v] = dist[u] + w;
                pq.push({dist[v], v});
            }
        }
    }

    // 输出到达终点 N 的最短时间
    cout << dist[n] << "\n";

    return 0;
}

提出情報

提出日時
問題 D - 最速配達ルート
ユーザ evilwater
言語 C++23 (GCC 15.2.0)
得点 400
コード長 2028 Byte
結果 AC
実行時間 52 ms
メモリ 14120 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 85
セット名 テストケース
Sample sample01.txt, sample02.txt, sample03.txt
All sample01.txt, sample02.txt, sample03.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, in67.txt, in68.txt, in69.txt, in70.txt, in71.txt, in72.txt, in73.txt, in74.txt, in75.txt, in76.txt, in77.txt, in78.txt, in79.txt, in80.txt, in81.txt, in82.txt
ケース名 結果 実行時間 メモリ
in01.txt AC 5 ms 3536 KiB
in02.txt AC 1 ms 3764 KiB
in03.txt AC 2 ms 3736 KiB
in04.txt AC 1 ms 3684 KiB
in05.txt AC 1 ms 3636 KiB
in06.txt AC 1 ms 3596 KiB
in07.txt AC 25 ms 9484 KiB
in08.txt AC 1 ms 3556 KiB
in09.txt AC 41 ms 11720 KiB
in10.txt AC 2 ms 3852 KiB
in11.txt AC 42 ms 11772 KiB
in12.txt AC 41 ms 11660 KiB
in13.txt AC 25 ms 9564 KiB
in14.txt AC 21 ms 9564 KiB
in15.txt AC 32 ms 9292 KiB
in16.txt AC 25 ms 9560 KiB
in17.txt AC 23 ms 7932 KiB
in18.txt AC 37 ms 14120 KiB
in19.txt AC 47 ms 12864 KiB
in20.txt AC 24 ms 7900 KiB
in21.txt AC 42 ms 11772 KiB
in22.txt AC 43 ms 11720 KiB
in23.txt AC 38 ms 11660 KiB
in24.txt AC 41 ms 11720 KiB
in25.txt AC 37 ms 12672 KiB
in26.txt AC 50 ms 11724 KiB
in27.txt AC 1 ms 3428 KiB
in28.txt AC 17 ms 9616 KiB
in29.txt AC 1 ms 3432 KiB
in30.txt AC 1 ms 3480 KiB
in31.txt AC 1 ms 3596 KiB
in32.txt AC 1 ms 3432 KiB
in33.txt AC 1 ms 3540 KiB
in34.txt AC 1 ms 3432 KiB
in35.txt AC 51 ms 12380 KiB
in36.txt AC 46 ms 11608 KiB
in37.txt AC 1 ms 3472 KiB
in38.txt AC 1 ms 3480 KiB
in39.txt AC 1 ms 3764 KiB
in40.txt AC 1 ms 3764 KiB
in41.txt AC 1 ms 3764 KiB
in42.txt AC 2 ms 3560 KiB
in43.txt AC 1 ms 3480 KiB
in44.txt AC 1 ms 3592 KiB
in45.txt AC 1 ms 3592 KiB
in46.txt AC 1 ms 3556 KiB
in47.txt AC 41 ms 12764 KiB
in48.txt AC 40 ms 12536 KiB
in49.txt AC 48 ms 13016 KiB
in50.txt AC 44 ms 12924 KiB
in51.txt AC 1 ms 3764 KiB
in52.txt AC 19 ms 7548 KiB
in53.txt AC 51 ms 12248 KiB
in54.txt AC 44 ms 11272 KiB
in55.txt AC 42 ms 12744 KiB
in56.txt AC 35 ms 9548 KiB
in57.txt AC 1 ms 3608 KiB
in58.txt AC 1 ms 3720 KiB
in59.txt AC 40 ms 12360 KiB
in60.txt AC 36 ms 11020 KiB
in61.txt AC 41 ms 11720 KiB
in62.txt AC 36 ms 10628 KiB
in63.txt AC 1 ms 3428 KiB
in64.txt AC 1 ms 3528 KiB
in65.txt AC 1 ms 3528 KiB
in66.txt AC 1 ms 3568 KiB
in67.txt AC 1 ms 3540 KiB
in68.txt AC 1 ms 3636 KiB
in69.txt AC 1 ms 3720 KiB
in70.txt AC 1 ms 3684 KiB
in71.txt AC 1 ms 3684 KiB
in72.txt AC 1 ms 3432 KiB
in73.txt AC 1 ms 3432 KiB
in74.txt AC 18 ms 7428 KiB
in75.txt AC 18 ms 7564 KiB
in76.txt AC 2 ms 3528 KiB
in77.txt AC 1 ms 3608 KiB
in78.txt AC 52 ms 11868 KiB
in79.txt AC 43 ms 11596 KiB
in80.txt AC 23 ms 9580 KiB
in81.txt AC 28 ms 9484 KiB
in82.txt AC 27 ms 10596 KiB
sample01.txt AC 1 ms 3592 KiB
sample02.txt AC 1 ms 3608 KiB
sample03.txt AC 1 ms 3428 KiB