The Java Program: GraphC.java

  1 public class GraphC {
  2 
  3    final int edges[][];
  4  
  5    public GraphC (int[][] edges) { this.edges = edges; }
  6 
  7    public Graph loseEdges (final int i, final int j) {
  8       final int n = edges.length;
  9       final int[][] newedges = new int[n][];
 10 
 11       edgelists:  for (int k = 0; k < n; k++) {
 12 
 13          int z;
 14 
 15          search: {
 16             if (k == i) {
 17                for (z = 0; z < edges[k].length; z++)
 18                   if (edges[k][z] == j) break search;
 19             } else if (k == j) {
 20                for (z = 0; z < edges[k].length; z++)
 21                   if (edges[k][z] == i) break search;
 22             }
 23 
 24             // No edge to be deleted; share this list.
 25             newedges[k] = edges[k];
 26             continue edgelists;
 27 
 28          }  // end search
 29 
 30          final int m = edges[k].length - 1;
 31          final int [] ne = new int[m];
 32          System.arraycopy (edges[k], 0, ne, 0, z);
 33          System.arraycopy (edges[k], z+1, ne, z, m-z);
 34          newedges[k] = ne;
 35 
 36       } // end edgelists
 37 
 38       return new Graph(newedges);
 39    }
 40 }