Árbol de expansión mínimo ------------- red más corta

¡El granjero John fue elegido como alcalde de su ciudad!
Una de sus promesas de campaña fue establecer Internet en la ciudad y conectarse a todas las granjas.
John ha organizado una línea de red de alta velocidad para su granja, y quiere compartir esta línea con otras granjas.
El número de granjas de John es 1, y el número de otras granjas es 2∼n2∼n.
Para minimizar los costos, espera que la longitud total de fibra utilizada para conectar todas las granjas sea lo más corta posible.
Obtendrá una lista de las distancias de conexión entre las granjas. Debe encontrar una solución que pueda conectar todas las granjas y minimizar la fibra utilizada.
Formato de entrada La
primera línea contiene un número entero nn, que indica el número de granjas.
Las siguientes nn filas, cada fila contiene nn enteros, ingrese una matriz simétrica con todos los 0 en la diagonal.

El número entero en la columna yy de la fila x + 1x + 1 representa la longitud de fibra requerida para conectar la granja xx y la granja yy.
Formato de
salida Genera un número entero que representa la longitud de fibra mínima requerida.
Rango de datos
3≤n≤1003≤n≤100

La distancia entre cada dos granjas es un número entero no negativo y no excede 100,000.
Ejemplo de entrada:
4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0

Salida de muestra:
28

Algoritmo primo puro

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int n;
int w[N][N];
int dist[N];
int st[N];
int prim(){
 int res = 0;
 memset(dist, 0x3f, sizeof dist);
 dist[1] = 0;
  for (int i = 0; i < n; i ++){
  int t = -1;
  for (int j = 1; j <= n; j ++)
     if (!st[j] && (t == -1 || dist[t] > dist[j]))
       t = j;
    res += dist[t];
  st[t] = true;
   for (int j = 1; j <= n; j ++)    dist[j] = min(dist[j], w[t][j]);
 }
  return res;
}
int main(){
 cin >> n;
 for (int i = 1; i <= n; i ++)
     for (int j = 1; j <= n; j ++)
        cin >> w[i][j];
         cout << prim() << endl;
  return 0;
} 
164 artículos originales publicados · Me gusta 112 · Visitantes 6782

Supongo que te gusta

Origin blog.csdn.net/qq_45772483/article/details/105377382
Recomendado
Clasificación