|
|
@ -50,24 +50,23 @@ object Main { |
|
|
|
Array(0 , 42, 66, 31, 0) |
|
|
|
); |
|
|
|
|
|
|
|
//format: on |
|
|
|
// format: on |
|
|
|
|
|
|
|
// Prim's algorithm |
|
|
|
|
|
|
|
val selected: ArrayBuffer[Boolean] = |
|
|
|
ArrayBuffer.from(Array.ofDim[Boolean](5).toIndexedSeq) |
|
|
|
ArrayBuffer.fill(5)(false) |
|
|
|
|
|
|
|
selected(0) = true |
|
|
|
|
|
|
|
var numberOfEdges = 0 |
|
|
|
|
|
|
|
for (_ <- numberOfEdges to 3) { |
|
|
|
for (_ <- 0 until 4) { |
|
|
|
var min = 999999 |
|
|
|
var x = 0 |
|
|
|
var y = 0 |
|
|
|
for (i <- 0 to 4) { |
|
|
|
for (i <- 0 until 5) { |
|
|
|
if (selected(i) == true) { |
|
|
|
for (j <- 0 to 4) { |
|
|
|
for (j <- 0 until 5) { |
|
|
|
if (selected(j) == false && edges(i)(j) != 0) { |
|
|
|
if (min > edges(i)(j)) { |
|
|
|
min = edges(i)(j) |
|
|
@ -100,15 +99,19 @@ object Main { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
println(edges2) // prints adjacency matrix |
|
|
|
edges2.foreach { e => |
|
|
|
e.foreach { d => |
|
|
|
print(f"$d%.2f, ") |
|
|
|
} |
|
|
|
println() |
|
|
|
} |
|
|
|
|
|
|
|
// ArrayBuffer( |
|
|
|
// ArrayBuffer(0.0 , 1.4142135623730951, 1.0 , 5.0 , 2.0), |
|
|
|
// ArrayBuffer(1.4142135623730951, 0.0 , 1.0 , 5.0 , 3.1622776601683795), |
|
|
|
// ArrayBuffer(1.0 , 1.0 , 0.0 , 4.242640687119285, 2.23606797749979), |
|
|
|
// ArrayBuffer(5.0 , 5.0 , 4.242640687119285, 0.0 , 4.123105625617661), |
|
|
|
// ArrayBuffer(2.0 , 3.1622776601683795, 2.23606797749979 , 4.123105625617661, 0.0), |
|
|
|
// ) |
|
|
|
// prints |
|
|
|
// 0.00 , 159.64, 112.79, 563.55, 225.88 |
|
|
|
// 159.64, 0.00 , 112.94, 564.16, 357.08 |
|
|
|
// 112.79, 112.94, 0.00 , 478.40, 252.42 |
|
|
|
// 563.55, 564.16, 478.40, 0.00 , 463.64 |
|
|
|
// 225.88, 357.08, 252.42, 463.64, 0.00 |
|
|
|
|
|
|
|
} |
|
|
|
} |