package graph;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class Graph{
private int v; //顶点数
private int e; //边数
private int [][] matrix ; //邻接矩阵
public Graph(int vartex, int edge){
this.v = vartex;
this.e = edge;
this.matrix = new int[v][v];
}
//两个顶点间存在边,设置矩阵值
public void addEdge(int v1, int v2){
matrix[v1][v2] = 1;
matrix[v2][v1] = 1;
}
public int[][] getAdjacencyMatrix(){ return matrix; } //获取邻接矩阵
public static void main(String[] args){
try(Scanner scanner = new Scanner(new File("tinyG.txt"));
PrintWriter out = new PrintWriter(new File("tinyG_matrix.txt"));){
int v = scanner.nextInt(); //第一行的数字是顶点的数目
int e = scanner.nextInt(); //第二行的数字是边的数目
Graph graph = new Graph(v, e);
//读取每条边对应的两个顶点,设置邻接矩阵的值
for (int i = 0; i < e; i++) {
int v1 = scanner.nextInt();
int v2 = scanner.nextInt();
graph.addEdge(v1, v2);
}
//计算无向图的邻接矩阵,并将其写到文件中
int[][] matrix = graph.getAdjacencyMatrix();
for(int i=0; i<v; i++){
for(int j=0; j<v; j++){
out.print(matrix[i][j] + " ");
}
out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
System.err.println("邻接矩阵已成功写到“tinyG_matrix.txt”");
}
}
第四周作业——图的表示
最新推荐文章于 2022-12-10 23:08:58 发布