bastaría con evitar que una mina se añada como raíz y como hija de un mismo árbol. Se intenta primero la opción "a) como padre". Si se cumple, pasas a otro árbol. Si no, intentas insertarla como hija.
Pero nunca ambas cosas, para evitar eso, que el nodo esté presente duplicado en un árbol.
Si buscas el ejemplo de hawkings, el de las 3 minas:
Y las llamas Top, Bottol y Right por identificarlas de alguna forma (T, B y R).
lees la mina T. Creas un árbol por ser la primera.
lees la mina B, intentas meterla como padre de T. Funciona (T está dentro de B).
lees la mina R, intentas meterla como padre en el árbol, funciona, con lo q te queda:
R -> B -> T
Si buscas otro ejemplo, por ejemplo este:
Y las numeramos de izq a derecha: 1, 2, 3, 4 y 5
Imagina que el orden en que las leemos es ese mismo, de izq a dcha:
Leemos la 1, creamos árbol.
Leemos la 2, es padre de la 1 : 2 -> 1
Leemos la 3, padre de la 2: 3 -> 2 -> 1
Leemos la 4, padre de la 3: 4 -> 3 -> 2 -> 1
Leemos la 5, que es padre de la 4: 5 -> 4 -> 3 -> 2 -> 1
Si nos las diesen al revés, primero la 5 hasta la 1:
5
5 -> 4
al leer la 3, vemos que no es padre de nuestra raíz (la 5), así que tratamos de insertarla como hija. Hija de la 5? no. Hija de la 4? Sí:
5 -> 4 -> 3
etc.
Yo creo que podría funcionar.
hr
Hawkings, no entiendo de qué grafo hablas _xD_
Dices que lo ordenas, pero ¿cómo lo construyes? Las minas son los nodos del grafo? Es un grafo dirigido? Es un grafo o son varios? Me he perdido.