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 }