原博客:POJ 1251 Jungle Roads 解题报告
object JungleRoads2 extends App{
import java.io.BufferedInputStream
import java.util.Scanner
val scanner: Scanner = new Scanner(new BufferedInputStream(System.in))
val father = new Array[Int](27)
var linecount = 0
val A = 'A'.toInt
def find(i:Int):Int = {
if(i == father(i)) i
else{
father(i) = find(father(i))
father(i)
}
}
while({linecount = scanner.nextInt();linecount != 0}){
for(i <- 0.until(27)){
father(i)=i
}
var totalweight = 0
val path = new Array[(Int, Int, Int)](80)
var index = 0
for(i <- 0.until(linecount-1)){
val src = scanner.next("[A-Z]")(0).toInt - A
val edgecount = scanner.nextInt()
for(j <- 0.until(edgecount)){
val dst = scanner.next("[A-Z]")(0).toInt - A
val weight = scanner.nextInt()
path(index) = (src, dst, weight)
index += 1
}
}
val temppath = path.take(index).sortWith(_._3 < _._3)
for(i <- temppath){
val x = find(i._1)
val y = find(i._2)
if(x != y){
totalweight += i._3
father(x) = y
}
}
println(totalweight)
}
}