Likou 1319. El número de operaciones conectadas a la red y la colección + pensamiento

https://leetcode-cn.com/problems/number-of-operations-to-make-network-connected/
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Idea: Porque la imagen tiene un total de nnn puntos, entonces solon - 1 n-1norte-Un borde puede conectar este gráfico. Dado que podemos dividir aristas arbitrariamente y sumarlas entre los vértices apropiados, si el número dado de aristas<n - 1 <n-1<norte-1 Entonces no debe haber solución, de lo contrario debe haber una solución. El número mínimo de operaciones requeridas cuando hay una solución es igual al número de componentes conectados del gráfico- 1 -1- 1 . ¿Cómo encontrar el número de componentes conectados? dfs, bfs, dfs, bfs,d f s , b f s , y el conjunto de cheque.

class Solution {
    
    
public:
    vector<int> f;

    int father(int x)
    {
    
    
        return f[x]==x?x:f[x]=father(f[x]);
    }

    int makeConnected(int n, vector<vector<int>>& connections) {
    
    
        if(connections.size()<n-1)
            return -1;
        f.resize(n);
        for(int i=0;i<n;i++)
            f[i]=i;
        int ans=n;
        for(vector<int>& each:connections)
        {
    
    
            int fx=father(each[0]);
            int fy=father(each[1]);
            if(fx!=fy)
                f[fx]=fy,--ans;
        }
        return ans-1;
    }
};

Supongo que te gusta

Origin blog.csdn.net/xiji333/article/details/113065127
Recomendado
Clasificación