您的位置:首页 > 其它

第四周作业——图的表示

2014-04-02 13:26 239 查看
import java.io.*;

import java.util.*;

public class GraphRepresentation {

int v ; //设置顶点

int e ; //设置边的数目

int[][] matrix; //邻接矩阵

public GraphRepresentation(int v,int e) {//构造函数,初始化函数

this.v = v;

this.e = e;

matrix = new int[v][e];

}

public void addEdge(int v1,int v2) {//两个顶点存在边,设置矩阵的值为1

matrix[v1][v2] = 1;

matrix[v2][v1] = 1;

}

public int[][] getAdjacentMatrix(){//获取邻接矩阵

return matrix;

}

//主函数

public static void main(String[] args)throws Exception{

File file = new File("d:"+File.separator+"tinyG.txt");

//读取文件路径

Scanner scan = new Scanner(file);

PrintWriter out = new PrintWriter("d:"+File.separator+"tinyG_Matrix.txt");

int v = scan.nextInt(); //读取第一行是顶点的个数

int e = scan.nextInt(); //读取第二行是边的个数

GraphRepresentation graph = new GraphRepresentation(v,e);

//读取每条边对应的顶点,设置邻接矩阵的值

for(int i=0;i<e;i++){

int v1 = scan.nextInt();

int v2 = scan.nextInt();

graph.addEdge(v1, v2);

}

//获取无向图的邻接矩阵,并且写入文件

int[][] matrix = graph.getAdjacentMatrix();

for(int i=0;i<v;i++){

for(int j=0;j<v;j++) {

out.print(matrix[i][j]+"\t"); //显示第一行

}

out.println(); //换行

}

out.close();

}

}

0 1
1 0 0
1 1
0 0 0
0 0
0

1 0 0
0 0
0 0 0
0 0
0 0 0

1 0 0
0 0
0 0 0
0 0
0 0 0

0 0 0
0 1
1 0 0
0 0
0 0 0

0 0 0
1 0
1 1 0
0 0
0 0 0

1 0 0
1 1
0 0 0
0 0
0 0 0

1 0 0
0 1
0 0 0
0 0
0 0 0

0 0 0
0 0
0 0 0
1 0
0 0 0

0 0 0
0 0
0 0 1
0 0
0 0 0

0 0 0
0 0
0 0 0
0 0
1 1 1

0 0 0
0 0
0 0 0
0 1
0 0 0

0 0 0
0 0
0 0 0
0 1
0 0 1

0 0 0
0 0
0 0 0
0 1
0 1 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: