Part 1 is mostly straightforward. Several people on Reddit say they solved Part 2 using depth-first search and/or recursion, but I encountered combinatorial explosion when I tried that, so I spent my time looking for other approaches. (Caching would probably make it work, but I didn’t feel like figuring out how to implement that.) I tried a Monte-Carlo approach, but I quickly realized that the data was set up so that this would be like looking for a needle in a haystack.
On Reddit a lot of users implemented the Bron-Kerbosch algorithm, which not only had I never heard of, neither did a professional graph theorist.
My Monte-Carlo approach wasn’t a complete waste of time, in that I noticed it was consistently producing LANs with 12 computers. There were only 13 possible connections from any one computer, and the puzzle makes it clear that all the computers in a LAN are connected to each other, so the correct answer couldn’t have had more than 14 computers (1 + its 13 listed connections) – and that was unlikely, so it had to be a network of 13. Nevertheless, I didn’t look precisely for that; what I did was take each set S of connections from a node; for each element of S count how many other elements of S it was connected to, and if the result was consistent (i.e., the number of elements w/the maximal number of connections was in fact that number of connections) then save that, keeping the largest saved set.
I’m not actually sure it’s correct in all cases, but it worked here, and the same graph theorist I mentioned above on Reddit described a similar approach, at least in principle, even producing a proof that it works under the given assumptions, so… On to day 24 I reckon… but the stats suggest that’s another murderous problem, so I’ll have to put it off another day or more.