SOLUCIÓN AL EJERCICIO Nš 2 DE GRAFOS




/* Fichero :conexo.c  */

#include "particion.h"
#include "grafo.h"

int numComponentesConexas(grafo G)
{
  arista arist;
  vertice vert,vert1;
  Particiones componentesConexas;

  componentesConexas=CrearParticiones(sizeof(vertice),numVertices(G),compararVertices);

  /*Ponemos a cada vertice en una componente conexa inicialmente*/
  forTodosVertices(vert,G)
    CrearParticion(vert,componentesConexas);

  /*Ponemos en la misma componente conexa a los vertices conectados*/
  forTodosVertices(vert,G)
    forAristasAdy(arist,vert,G){
      vert1=destinoArista(arist,G);
      UnirParticiones(vert,vert1,componentesConexas);
    }
  }
  return numeroParticiones(componentesConexas);
}

/*Fin fichero: conexo.c */