Fixing a caching mistake in find_alive

When caching the alive ancestors/descendants, we were not merging the alive sets found in different paths. The consequence was that a vertex that had already been visited in the same find_alive call would have its set of alive ancestors overwritten on the second visit. But since that vertex is marked as visited on the first visit, the second visit has no alive ancestors, and the alive ancestor set would therefore end up empty.

After careful benchmarking, caching all the vertices on real-world examples doesn't bring much benefit, and may even slow things down significantly.

Created by  pmeunier  on December 15, 2023
PNKAJTFZM37FD6XPC3HLVBDT54XDC3SQMFNM32N6TTZ72BVFUKWQC
Change contents