function makeGraph(s) {
const edges = txt
.split('\n')
.map(l => l.match(/(\w+)\)(\w+)/))
.map(([, v1, v2]) => [v1, v2]);
const verts = {};
for (const [v1, v2] of edges) {
if (!verts[v1]) {
verts[v1] = { name: v1, children: [] };
verts[v1].parent = null;
}
if (!verts[v2]) {
verts[v2] = { name: v2, children: [] };
}
verts[v2].parent = verts[v1];
verts[v1].children.push(verts[v2]);
}
let count = 0;
for (const [k, v] of Object.entries(verts)) {
let w = v;
while (w.parent) {
count++;
w = w.parent;
}
}
return { edges, verts, count };
}