单纯的求最小生成树普林斯算法,
AC代码
package 最小生成树;
import java.util.Scanner;
public class poj1258 {
/**
* @param args
*/
static int n,min;
static int map[][]=new int[100+2][100+2];
static int lowcost[]=new int[100+2];
static int mst[]=new int[100+2];
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
n=scan.nextInt();
if(n<3&&n>10){
break;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
map[i][j]=scan.nextInt();
}
}
int cost=prime();
System.out.println(cost);
}
}
private static int prime() {
// TODO Auto-generated method stub
int sum=0;
for(int i=2;i<=n;i++){
lowcost[i]=map[1][i];
mst[i]=1;
}
mst[1]=0;
int minid;
for(int i=2;i<=n;i++){
min = Integer.MAX_VALUE;
minid = 0;
for(int j=2;j<=n;j++){
if(lowcost[j]<min&&lowcost[j]!=0){
min=lowcost[j];
minid=j;
}
}
lowcost[minid]=0;
sum += min;
for(int j=2;j<=n;j++){
if(map[minid][j]<lowcost[j]){
lowcost[j] = map[minid][j];
mst[j] = minid;
}
}
}
return sum;
}
}