Submission #30006478


Source Code Expand

use proconio::{input, marker::Usize1};

fn adjacency_list(n: usize, uvw: &[(usize, usize, u64)]) -> Vec<Vec<(usize, u64)>> {
    let mut e = vec![vec![]; n];
    for (u, v, w) in uvw.iter().copied() {
        e[u].push((v, w));
        e[v].push((u, w));
    }
    e
}

fn dijkstra(n: usize, inf: u64, e: &[Vec<(usize, u64)>], s: usize) -> Vec<u64> {
    use std::{cmp::Reverse, collections::BinaryHeap};
    let mut d = vec![inf; n];
    let mut pq = BinaryHeap::new();
    d[s] = 0;
    pq.push(Reverse((0, s)));
    while let Some(Reverse((w_u, u))) = pq.pop() {
        if w_u > d[u] {
            continue;
        }
        for (v, w_v) in e[u].iter().copied() {
            let w = w_u + w_v;
            if w < d[v] {
                d[v] = w;
                pq.push(Reverse((w, v)));
            }
        }
    }
    d
}

fn main() {
    input! {
        n: usize,
        m: usize,
        abc: [(Usize1, Usize1, u64); m],
    };

    let edges = adjacency_list(n, &abc);
    let inf = 1_u64 << 60;
    let dist = dijkstra(n, inf, &edges, 0);
    let ans = if dist[n - 1] == inf {
        -1_i64
    } else {
        dist[n - 1] as i64
    };
    println!("{}", ans);
}

Submission Info

Submission Time
Task 080 - Difference Optimization 2
User bouzuya
Language Rust (1.42.0)
Score 1000
Code Size 1182 Byte
Status AC
Exec Time 192 ms
Memory 51148 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 2
AC × 11
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All normal_01.txt, normal_02.txt, normal_03.txt, normal_04.txt, normal_05.txt, normal_06.txt, normal_07.txt, normal_08.txt, normal_09.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
normal_01.txt AC 11 ms 4980 KiB
normal_02.txt AC 98 ms 24040 KiB
normal_03.txt AC 36 ms 13896 KiB
normal_04.txt AC 192 ms 51148 KiB
normal_05.txt AC 75 ms 22316 KiB
normal_06.txt AC 2 ms 2056 KiB
normal_07.txt AC 2 ms 2096 KiB
normal_08.txt AC 2 ms 2056 KiB
normal_09.txt AC 2 ms 2040 KiB
sample_01.txt AC 4 ms 1948 KiB
sample_02.txt AC 2 ms 2116 KiB