...is doch eigentlich ganz simpel (nachdem es heute in der Übungsstunde die kompliziertesten Ansätze gab):

Angenommen, es gibt keine gleichen Knoten (siehe später), ich hatte ursprünglich auch angenommen, die DDM Struktur ist bereits initialisert, aber das is mal nicht schwer:

Code:
Für alle Knoten v_i: makeset(v_i);
Für alle Kanten {v,w}: union(v,w);
Wenn man sich anschaut, wie die Struktur DDM überhaupt aufgebaut ist, sieht man, daß zu jedem Knoten nur der Father gespeichert ist, ist es der Root-Knoten, zeigt er auf sich selbst. Die Funktion findset() liefert von jedem beliebigen Knoten den Root-Knoten zurück, und über diesen Root-Knoten (nach der obigen Annahme) läßt sich dann IMHO jede Zusammenhangskomponente eindeutig identifizieren...

Code:
Für alle Knoten v_i: Komponente[v_i]=findset(v_i);
Damit hat man im Array Komponente zu jedem Knoten den Root-Knoten gespeichert, und hat damit bei jeder Zusammenhangskomponente denselben Root-Knoten. Wenn einen stört, daß die Zusammenhangskomponenten nicht von 1-x durchnumeriert sind: sowas läßt sich dann ja einfach lösen mit den altbekannten Sort-Algorithmen und Minimum-Funktionen...

P.S.: Keine Garantie auf Richtigkeit, aber ich find, meine Überlegung klingt doch sehr plausibel, nicht ?