Skip to content

Commit

Permalink
abc192 e
Browse files Browse the repository at this point in the history
  • Loading branch information
bouzuya committed Nov 10, 2023
1 parent 0c2ed82 commit 91f67d0
Showing 1 changed file with 40 additions and 3 deletions.
43 changes: 40 additions & 3 deletions cargo-atcoder-1.70.0/contests/abc192/src/bin/e.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,47 @@
use std::{cmp::Reverse, collections::BinaryHeap};

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

fn main() {
input! {
n: usize,
a: [Usize1; n],
m: usize,
x: Usize1,
y: Usize1,
abtk: [(Usize1, Usize1, usize, usize); m]
};
let ans = n - a.len();
println!("{}", ans);

let mut edges = vec![vec![]; n];
for (a, b, t, k) in abtk {
edges[a].push((b, t, k));
edges[b].push((a, t, k));
}

let inf = 1_usize << 60;
let mut time = vec![inf; n];
let mut pq = BinaryHeap::new();
pq.push((Reverse(0_usize), x));
time[x] = 0_usize;
while let Some((Reverse(t), u)) = pq.pop() {
if t > time[u] {
continue;
}
for (v, t, k) in edges[u].iter().copied() {
let nt = if time[u] % k == 0 {
time[u]
} else {
time[u] + k - (time[u] % k)
} + t;
if nt < time[v] {
time[v] = nt;
pq.push((Reverse(nt), v));
}
}
}
let ans = time[y];
if ans == inf {
println!("-1");
} else {
println!("{}", ans);
}
}

0 comments on commit 91f67d0

Please sign in to comment.