public int[][] listaAristas(Grafo g) { // ineficiente para grafos dispersos
   int orden = g.orden();
   int[][] lista = new int[2][g.cantAristas()];
   int contador = 0;
   for (int i = 0; i < orden; i++) {
     for (int j = i + 1; j < orden; j++) {
       if (g.hayArista(i, j)) {
         lista[1][contador] = i;
         lista[2][contador] = j;
         contador++;
       }
     }
   }
   return lista;
 }
 public int[][] listaAristas2(Grafo g) {
   int n = g.orden();
   int[][] a = new int[g.cantAristas()][2];
   int k = -1;
   List<Integer> list;
   for (int i = 0; i < n; i++) {
     list = g.getListaAdy(i);
     if (!list.isEmpty()) {
       for (Integer aList : list) {
         int w = aList;
         if (w > i) {
           k++;
           a[k][0] = i;
           a[k][1] = w;
         }
       }
     }
   }
   return a;
 }