From 5ab8a5088b729a9953b8dff1b2a985dc8fb2098b Mon Sep 17 00:00:00 2001 From: mzuenni Date: Mon, 27 Jun 2022 17:19:28 +0200 Subject: updated tcr --- graph/havelHakimi.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 graph/havelHakimi.cpp (limited to 'graph/havelHakimi.cpp') diff --git a/graph/havelHakimi.cpp b/graph/havelHakimi.cpp new file mode 100644 index 0000000..9fb9846 --- /dev/null +++ b/graph/havelHakimi.cpp @@ -0,0 +1,19 @@ +vector> havelHakimi(const vector& deg) { + priority_queue> pq; + for (int i = 0; i < sz(deg); i++) pq.push({deg[i], i}); + vector> adj; + while (!pq.empty()) { + auto v = pq.top(); pq.pop(); + if (sz(pq) < v.first) return {}; //ERROR + vector> todo; + for (int i = 0; i < v.first; i++) { + auto u = pq.top(); pq.pop(); + adj[v.second].push_back(u.second); + adj[u.second].push_back(v.second); + u.first--; + if (u.first > 0) todo.push_back(u); + } + for (auto e : todo) pq.push(e); + } + return adj; +} -- cgit v1.2.3