From 378143f61f6476afe998b69be22f9aba8be03113 Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Mon, 12 Dec 2022 20:57:16 +0100 Subject: [PATCH] Day12 --- src/days/12/Day12.cpp | 12 ++++++++---- src/days/12/Day12.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/days/12/Day12.cpp b/src/days/12/Day12.cpp index c18793c..ed7aa51 100644 --- a/src/days/12/Day12.cpp +++ b/src/days/12/Day12.cpp @@ -61,8 +61,8 @@ map Day12::dijkstra(Graph &graph, Vertex start) { queue.erase(u); - for (const Vertex &v : queue){ - if (!graph.E.contains({u, v})) + for (const Vertex &v : graph.out[u]){ + if (!queue.contains(v)) continue; size_t newDist = dist[u] + 1; @@ -100,10 +100,14 @@ Day12::Graph Day12::parseGraph(bool reverse) { auto checkEdges = [&g, readChar, this](Vertex v1, Vertex v2){ char c1 = readChar(input[v1.second][v1.first]); char c2 = readChar(input[v2.second][v2.first]); - if (c2 <= c1 + 1) + if (c2 <= c1 + 1){ g.E.insert({v1, v2}); - if (c1 <= c2 + 1) + g.out[v1].insert(v2); + } + if (c1 <= c2 + 1) { g.E.insert({v2, v1}); + g.out[v2].insert(v1); + } }; for (Vertex v : g.V){ diff --git a/src/days/12/Day12.h b/src/days/12/Day12.h index c4811e5..162eb5b 100644 --- a/src/days/12/Day12.h +++ b/src/days/12/Day12.h @@ -10,6 +10,7 @@ class Day12 : public Day { struct Graph { set V; set E; + map> out; }; map dijkstra(Graph&,Vertex);