Jungle Roads scala语言

原博客: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)
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值