From 5bb285d7e1171cbbde5707e33af90fed93cafaaf Mon Sep 17 00:00:00 2001 From: Dory Date: Sun, 22 Dec 2024 23:20:51 -0800 Subject: [PATCH] d23p2 use pivoting --- day23/d23p2.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/day23/d23p2.swift b/day23/d23p2.swift index b228fb6..7c42149 100644 --- a/day23/d23p2.swift +++ b/day23/d23p2.swift @@ -16,13 +16,14 @@ func readInput(_ filePath: String) throws -> Network { func bronkerbosch( _ network: Network, r: Set, p: Set, x: Set ) -> Set? { - if p.count == 0 && x.count == 0 { - return r + if p.count == 0 { + return x.count == 0 ? r : nil } var maxClique: Set? = nil var nextP = p var nextX = x - for v in p { + let u = p.union(x).first! // can also choose highest degree node + for v in p.subtracting(network[u]!) { if let clique = bronkerbosch(network, r: r.union([v]), p: nextP.intersection(network[v]!),