综合题

省政府“畅通工程” 的目标是使全省任何两个村庄问都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。 现得到城镇道路统计表, 表中列出了任意两城镇间修建道路的费用, 以及该道路是否已经修通的状态, 全省一共有 N 个村庄, 编号为 1~N。 编写程序, 计算出全省畅通需要的最低成本。
道路信息保存在 road[]数组中, road[]数组定义如下:

【正确答案】

本题最小生成树算法的应用, 要实现全省各个村庄间都有通路并且通路总花费最小, 只需根据道路统计表, 建立最小生成树即可。 因为有些村庄中道路已经存在, 所以只在此基础上继续建立。 这里采用克鲁斯卡尔算法, 代码如下:

【答案解析】