package abc.Dijkstra.pack3; public class MGraph { int vertexNum; int [][] adjMatrix; MGraph(int vertexNum) { this.vertexNum = vertexNum; adjMatrix = new int[vertexNum][vertexNum]; } void addArc(int vi, int vj) { if(vi < 1 || vi > vertexNum) throw new RuntimeException("Not contain Vertex " + vi); if(vj < 1 || vj > vertexNum) throw new RuntimeException("Not contain Vertex " + vj); adjMatrix[vi-1][vj-1] = 1; } void print() { System.out.print(" "); for(int i = 1; i <= vertexNum; i++) System.out.print(String.format("%2d", i)); System.out.println(); int lable = 1; for(int[] a : adjMatrix) { System.out.print(lable++ + " ["); for(int i : a) System.out.print(String.format("%2d", i)); System.out.println(" ]"); } } static MGraph createUndigraph() { MGraph mGraph = new MGraph(4); mGraph.addArc(1, 2); mGraph.addArc(1, 3); mGraph.addArc(1, 4); mGraph.addArc(2, 1); mGraph.addArc(2, 4); mGraph.addArc(3, 1); mGraph.addArc(4, 1); mGraph.addArc(4, 2); return mGraph; } // sample for 8.10 undigraph adjancet graph. static MGraph createDigraph() { MGraph mGraph = new MGraph(4); mGraph.addArc(1, 2); mGraph.addArc(2, 4); mGraph.addArc(4, 2); mGraph.addArc(4, 3); return mGraph; } // sample for 8.11 undigraph adjancet graph. public static void main(String[] args) { MGraph.createUndigraph().print(); MGraph.createDigraph().print(); } }
输出 写道
1 2 3 4
1 [ 0 1 1 1 ]
2 [ 1 0 0 1 ]
3 [ 1 0 0 0 ]
4 [ 1 1 0 0 ]
1 2 3 4
1 [ 0 1 0 0 ]
2 [ 0 0 0 1 ]
3 [ 0 0 0 0 ]
4 [ 0 1 1 0 ]
1 [ 0 1 1 1 ]
2 [ 1 0 0 1 ]
3 [ 1 0 0 0 ]
4 [ 1 1 0 0 ]
1 2 3 4
1 [ 0 1 0 0 ]
2 [ 0 0 0 1 ]
3 [ 0 0 0 0 ]
4 [ 0 1 1 0 ]