Why are power distribution systems so prone to massive faults?
If a link, generator, switch, or other part of the electrical grid becomes overloaded, it will be necessary to disconnect some parts of it relatively quickly to prevent damage.  If the distribution network were a tree with a single supply at the root, it would be simple to figure out what to disconnect: whenever a node is overloaded, drop the lowest-priority descendent, and keep doing that until no more nodes are overloaded.  If the descendent nodes are widely distributed, there might be some technical challenges arranging for rapid communication so that a node won't drop unless the dropping of its lower-priority relatives was insufficient to solve the problem, but determining which nodes should drop is fundamentally not difficult if one assumes that the quality of a solution depends solely upon the priority of the highest node dropped (and, of course, the fact that it solves the overloads).

The actual electrical grid, however, is not such a tree structure.  Disconnecting part of a single-source tree will, for all other parts, either reduce the demand while leaving the supply unchanged, reduce the supply to zero, or have no other effect.  Disconnecting part of the more-strongly-connected grid, however, will often reduce the supply but not to zero, thus leaving a live part of the grid even more overloaded than it was before the disconnection.  Ideally, all parts of the grid could negotiate the optimal combination of nodes to disconnect to resolve overloads with minimal disruption.  Unfortunately, overloaded nodes often can't afford to wait very long for relief lest they suffer damage.  Sometimes a node will have to sever a link to protect itself, and such severance may end up creating an immediate and severe overload somewhere else.

As a simple example, imagine that A, B, and C (capacity 100 units each) source D, which source E, F, G, H, and I (demand 60 units each).  Something happens which reduces C capacity by 10 units, so A and B are at maximum capacity, and C is 10 units overloaded.  Dropping I would solve overload, but if the network can't resolve quickly enough that I should drop, C would have to remove itself from the network.  When that happens, A and B will now be overloaded by 50% each.  Even with C gone, the overloads could be fixed by dropping H and I, but a race would ensue between whether A or B (both 50% overloaded) would drop before H and I.  If A or B drops first, then the race would be to see whether four of the loads could be shed before the other generator drops.