Tarjeta perforada Lizou 2021.1.13 conexión redundante

Título:
En este problema, un árbol se refiere a un gráfico conectado y acíclico no dirigido.
Ingrese un gráfico que consta de un árbol con N nodos (los valores de los nodos no se repiten 1, 2,…, N) y un borde adicional. Los dos vértices del borde adicional están contenidos entre 1 y N. Este borde adicional no pertenece a un borde existente en el árbol.
El gráfico resultante es una matriz bidimensional de aristas. Los elementos de cada borde son un par de [u, v], que satisfacen u <v, que representan los bordes del gráfico no dirigido que conecta los vértices u y v.
Devuelve un borde que se puede eliminar para que el gráfico resultante sea un árbol con N nodos. Si hay varias respuestas, se devuelve el último borde de la matriz bidimensional. El lado de la respuesta [u, v] debe satisfacer el mismo formato u <v.

Ejemplo 1:
Entrada: [[1,2], [1,3], [2,3]]
Salida: [2,3]
Explicación: El gráfico no dirigido dado es:
1
/
2-3
Ejemplo 2:
Entrada: [ [1,2], [2,3], [3,4], [1,4], [1,5]]
Resultado: [1,4]
Explicación: El gráfico no dirigido dado es:
5 -1-2
| |
4-3
código: (y verifique el conjunto)

class Solution {
    
    
public:
    int Find(vector<int>& parent, int index) {
    
    
        if (parent[index] != index) {
    
    
            parent[index] = Find(parent, parent[index]);
        }
        return parent[index];
    }

    void Union(vector<int>& parent, int index1, int index2) {
    
    
        parent[Find(parent, index1)] = Find(parent, index2);
    }

    vector<int> findRedundantConnection(vector<vector<int>>& edges) {
    
    
        int nodesCount = edges.size();
        vector<int> parent(nodesCount + 1);
        for (int i = 1; i <= nodesCount; ++i) {
    
    
            parent[i] = i;
        }
        for (auto& edge: edges) {
    
    
            int node1 = edge[0], node2 = edge[1];
            if (Find(parent, node1) != Find(parent, node2)) {
    
    
                Union(parent, node1, node2);
            } else {
    
    
                return edge;
            }
        }
        return vector<int>{
    
    };
    }
};

Supongo que te gusta

Origin blog.csdn.net/weixin_45780132/article/details/112554887
Recomendado
Clasificación