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 ]