我正在尝试学习Prim的算法,而我正在使用this website这样做,但我无法使代码部分运行。我对class node implements Comparable<node> {
int weight, index;
public node(int weight, int index) {
this.weight = weight;
this.index = index;
}
public int compareTo(node e) {
return weight - e.weight;
}
}public static int Prims(Vector<Vector<node>> adjList) {
// Current cost of MST.
int cost = 0;
int n = adjList.size();
PriorityQueue<node> pq = new PriorityQueue<node>();
// Keep track if each node is visited.
boolean visited[] = new boolean[n];
for (int i = 0; i < n; i++) {
visited[i] = false;
}
// Number of nodes visited.
int inTree = 1;
// Mark starting node as visited.
visited[0] = true;
// Add all edges of starting node.
for (int i = 0; i < adjList.get(0).size(); i++) {
pq.add(adjList.get(0).get(i));
}
// Keep going until all nodes visited.
while (!pq.isEmpty() && inTree < n) {
// Get the edge with the smallest weight.
node cur = pq.poll();
// Skip if node already used.
if (visited[cur.index]) {
continue;
}
inTree++;
visited[cur.index] = true;
cost += cur.weight;
// Add all the edges of the new node to the priority queue.
for (int i = 0; i < adjList.get(cur.index).size(); i++) {
pq.add(adjList.get(cur.index).get(i));
}
}
// Graph not connected if number of nodes used is less than total nodes.
if (inTree < n) {
return -1;
}
return cost;
}
中的内容以及如何编译和运行代码感到困惑。 (对java来说是新的,如果这是一个愚蠢的问题,请原谅我。)
编辑:这是我正在尝试运行的代码:
{{1}}
答案 0 :(得分:0)
您的方法public static int Prims(Vector<Vector<node>> adjList)
似乎不是一个类的成员。它需要。行上的前导}
}public static int Prims(Vector<Vector<node>> adjList) {
应该可能移动到文件的末尾。
答案 1 :(得分:-1)
如果您不使用IDE编译和运行代码,则需要发出以下命令:
javac MyCode.java
java MyCode
我认为您的代码位于名为MyCode.java的文件中,并且没有定义包。