Está en la página 1de 2

#include <iostream>

using namespace std;


#define MAXNODOS 20

struct GrafoMA{
int numVertices;
int ma[MAXNODOS][MAXNODOS];
};

void inicializaGrafo(GrafoMA &dg)


{
dg.numVertices=0;
}

void insertaArista(GrafoMA &dg, int i, int j)


{
dg.ma[i][j]=1;
}

void eliminarArista(GrafoMA &dg, int i, int j)


{
dg.ma[i][j]=0;
}

void insertaVertices(GrafoMA &dg, int n)


{
if(n>MAXNODOS - dg.numVertices)
cout<<"Error, se supera el numero de nodos maximo "<<endl;
else
{
for (int i=0; i < dg.numVertices + n; i++) {
for (int j = dg.numVertices; j < dg.numVertices + n; j++)
dg.ma[i] [j]= dg.ma[j] [i] = 0;
}
dg.numVertices = dg.numVertices + n;
}
}

void imprimirTabla (GrafoMA dg)


{
cout<<"La matriz contiene "<<dg.numVertices<<" vectices"<<endl;
for (int i = 0; i < dg.numVertices; i++) {
for (int j = 0; j < dg.numVertices; j++)
cout<<dg.ma[i][j]<<"\t";
cout<<endl;
}
}

int gradoEntrada(GrafoMA dg, int j)


{
int gIn = 0;
for (int i = 0; i < dg.numVertices; i++) //recorrido por filas
if (dg.ma [i] [j])
gIn++; //manteniendo la posici?n de la columna en [j]
return gIn;
}
int gradoSalida(GrafoMA dg,int i) {
int gOut = 0;
for (int j= 0; j < dg.numVertices; j++)
if (dg.ma [i][j])
gOut++; // manteniendo la posici?n de la fila en [i]
return gOut;
}

int tamano(GrafoMA dg) {


int tm = 0;
for (int i = 0; i < dg.numVertices; i++)
for (int j=0; j < dg.numVertices; j++)
if (dg.ma[i] [j])
tm++;
return tm;
}

int main(int argc, char *argv[]) {

GrafoMA dg;
dg.numVertices=0;
int n,i,j;
char resp;
cout<<"Numero de vertices : ";
cin>>n;
insertaVertices(dg,n);
imprimirTabla(dg);
do{
cout<<"Vertice inicial : ";
cin>>i;
cout<<"Vertice final : ";
cin>>j;
insertaArista(dg,i,j);
cout<<"Deseas ingresar otra arista : ";
cin>>resp;
} while(resp!='N' && resp!='n');

cout<<"Grafo final "<<endl;


imprimirTabla(dg);

return 0;
}

También podría gustarte