利用Java构建无向图邻接矩阵

package Graph;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class AdjMatrix {
	private int V;    //顶点个数
	private int E;    //边的个数
	private int[][] adj;  //邻接矩阵
	
	public AdjMatrix(String fileName) {
		File file=new File(fileName);
		try {
			Scanner scanner=new Scanner(file);
			V=scanner.nextInt();
			adj=new int[V][V];
			E=scanner.nextInt();
			for(int i=0;i<E;i++) {
				int a=scanner.nextInt();
				int b=scanner.nextInt();
				//数组相应位置处有顶点之间连接的赋值为1
				adj[a][b]=1;  
				adj[b][a]=1;
				
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Override
	public String toString() {
		StringBuilder sb=new StringBuilder();
		sb.append(String.format("V = %d,E = %d\n",V,E));
		for(int i=0;i<V;i++) {
			for(int j=0;j<V;j++) {
				sb.append(String.format("%d\t", adj[i][j]));
			}
			sb.append('\n');
		}
		return sb.toString();
	}
	
	public static void main(String[] args) {
		AdjMatrix adj=new AdjMatrix("graph.txt");
		System.out.println(adj);
	}
}

得到的邻接矩阵如下所示:

V = 7,E = 9
0	1	0	1	0	0	0	
1	0	1	0	0	0	1	
0	1	0	1	0	1	0	
1	0	1	0	1	0	0	
0	0	0	1	0	1	0	
0	0	1	0	1	0	1	
0	1	0	0	0	1	0	

其中.txt文件中存储着无向图中的顶点个数、边的个数以及各个顶点之间的连接关系,如下所示
利用Java构建无向图邻接矩阵_第1张图片
该案例中的无向图如下:
利用Java构建无向图邻接矩阵_第2张图片

你可能感兴趣的:(算法图论)