|We don't bite newbies here... much
Here's a better version. I was going to wipe my scratchpad and saw that I could do one thing better ... then another ... then realized that there didn't need to be an identified element per subgraph...
Same output as above, although now the ordering of the lines is fortuitous. (But obviously can be set, if desired, by another sort.)
Hopefully it's a bit more clear that, since each iteration creates a complete set of associated vertices, the process finds the sets of vertices of the connected subgraphs of an arbitrary graph.
(Please pardon the enthusiasm, this is the kind of stuff I like to think about.)
In reply to Re^2: how to find combine common elements of an array?