Skip to content

Commit 2e6c59f

Browse files
committed
[day12b] VecDeque instead of BinaryHeap
BinaryHeap is unnecessary, as costs are constant, and queue is faster.
1 parent 25b9365 commit 2e6c59f

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

day12b/src/main.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use std::collections::{BinaryHeap, HashSet};
2-
use std::cmp::Reverse;
1+
use std::collections::{HashSet, VecDeque};
32
use std::io::Read;
43

54
fn main() {
@@ -23,11 +22,11 @@ fn main() {
2322
let height = map.len() as i16;
2423
let width = map[0].len() as i16;
2524

26-
let mut open_set = BinaryHeap::new();
27-
open_set.push((Reverse(0), 0, start));
25+
let mut open_set = VecDeque::new();
26+
open_set.push_back((0, start));
2827
let mut visited = HashSet::new();
2928

30-
while let Some((_, dist, pos)) = open_set.pop() {
29+
while let Some((dist, pos)) = open_set.pop_front() {
3130
let old_height = map[pos[0] as usize][pos[1] as usize];
3231
if old_height == 0 {
3332
println!("{}", dist);
@@ -52,7 +51,7 @@ fn main() {
5251
}
5352

5453
visited.insert(new_pos);
55-
open_set.push((Reverse(new_dist), new_dist, new_pos));
54+
open_set.push_back((new_dist, new_pos));
5655
}
5756
}
5857
}

0 commit comments

Comments
 (0)