在给定此格式的文本文件时,我无法使用Dijkstra算法。
第一行表示顶点数。我应该将此值存储为二维数组吗?
我在想,我可以让2D数组的第二部分成为每个顶点所拥有的实际值。
例如,顶点3保持78.顶点4保持87 ......等等。
我遇到的问题是必须存储边缘。
1 4 98
其中1是顶点1,4是顶点4,它们之间的距离是98.我如何存储98的这个值?
我只是难倒在这里,任何建议都会非常感激。
以下是输入
Number of Vertexes
Number of Edges
Vertex NumValue
Vertex Vertex NumValue
如果有两个顶点,则后面的NumValue是两者之间的距离。
输入
5
7
3 78
4 87
5 98
1 4 98
5 4 45
1 5 140
4 3 87
2 5 150
3 5 109
3 2 73
输出
388
答案 0 :(得分:0)
有很多方法可以做到这一点,这里有一些:
public class Edge {
private class Node {
private int value;
}
private Node from, to;
private double distance;
}
有了这个,您可以使用Edges的arraylist来表示图形
public class Graph {
private class Node {
private Node adjacent;
private double distance;
private int value;
}
private Node[] nodes;
}
在这里,您可以创建一个包含节点列表
的图表类public class Graph {
private double[][] matrix;
}
同样,这是一个图表类,但使用矩阵。如果节点1具有距离为75.9的节点5的边缘,则matrix[1][5] == 75.9
答案 1 :(得分:0)