Hola.
Antes de nada, comentarte que la mayoría de veces que entro en el foro lo hago desde máquinas desde las que no puedo programar en C, así que estaría bien que indicases qué errores te da y esas cosas.
Pues, ¿qué te parece si vamos por partes? Lo primero sería leer un grafo del teclado.
void leeGrafo (void)
{
cin >> nod >> naris;
if (nod<0 || nod>MAX_NOD) {
exit(0);
}
memset(G, 0, sizeof(G));
char a, b;
for (int i= 0; i<naris; i++) {
cin >> a >> b;
G[a-'A'][b-'A']= true;
}
}
Bien. Pides el número de vértices y el de aristas. Compruebas que el usuario no la ha líado antes de empezar. Hasta aquí parece que todo bien. Seguimos.
La verdad es que no estoy muy acostumbrado a usar la función memset, pero me extrañaría que el compilador te pillase esa línea. Supongo que quieres inicializar la matriz con todo ceros, pero G es un matriz de bools, entonces... No sé... Supongo que lo interesante sería inicializarla a false... Si no consigues hacerlo con memset utiliza los dos típicos bucles anidados y listo.
Lo de restar 'A' a los índices de la matriz tiene que arrojar errores por todos lados, ¿cuál es tu intención al hacerlo?
Después otra cosa, ¿no sería lo suyo aprovechar aquí para pedir aquí la matriz D?
Y una más, ¿lo de utilizar variables globales es porque te han dicho que lo hagas así o forma parte de tu estilo al programar? ¿Has oído hablar de estructuras, o de programación orientada a objetos?
Un saludo.