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 ]