#ifndef __GRAFO_H
#define __GRAFO_H
/*-------------------------------------------------------------------*/
/* "DISENO Y MANEJO DE ESTRUCTURAS DE DATOS EN C" - V. 1.0           */
/* Prof. Jorge Villalobos - Universidad de los Andes                 */
/*-------------------------------------------------------------------*/
/* TAD Grafo - Implementacion #3 (Representacion implicita)          */
/*-------------------------------------------------------------------*/

/*-------------------------------------------------------------------*/
/*                      ESTRUCTURAS DE DATOS                         */
/*-------------------------------------------------------------------*/

typedef int TipoL;
#include "Lista1.h"		/* #include TAD Lista[ int ] */

typedef struct
{	 int marcado[ 25 ];
} TGrafo, *Grafo ;

#include <stdio.h>

/*-------------------------------------------------------------------*/
/*                             OPERACIONES                           */
/*-------------------------------------------------------------------*/

/* Constructora */
Grafo inicGrafo( void );

/* Modificadoras */
void insVertice( Grafo g, TipoG elem );
void insArco( Grafo g, int x1, int x2, int c );
void elimArco( Grafo g, int x1, int x2 );
void marcarVertice( Grafo g, int v );
void desmarcarVertice( Grafo g, int v );
void desmarcarGrafo( Grafo g );

/* Analizadoras */
int costoArco( Grafo g, int x1, int x2 );
Lista sucesores( Grafo g, int v );
TipoG infoVertice( Grafo g, int v );
int ordenGrafo( Grafo g );
int marcadoVertice( Grafo g, int v );

/* Destructora */
void destruirGrafo( Grafo g );

/* Persistencia */
Grafo cargarGrafo( FILE *fp );
void salvarGrafo( Grafo g, FILE *fp );

/* Depuracion */
void impGrafo( Grafo g );

/*-------------------------------------------------------------------*/
#endif
