/**
* prime 算法
*
*/
import java.util.*;
public class Main {
Scanner sc=new Scanner(System.in);
final int MAX=9999999;
int n;
int[][] mat;
int[] low;
boolean[] visit;
void prime(){
for(int i=2;i<=n;i++)
low[i]=mat[1][i];
low[1]=MAX;
visit[1]=true;
int sum=0;
for(int k=2;k<=n;k++){
int index=k;
int min=MAX;
for(int i=2;i<=n;i++){
if(min>low[i]){
min=low[i];
index=i;
}
}
sum+=min;
low[index]=MAX;
visit[index]=true;
for(int i=2;i<=n;i++){
if(mat[index][i]<low[i]&&!visit[i])
low[i]=mat[index][i];
}
}
System.out.println(sum);
}
void init(){
n=sc.nextInt();
mat=new int[n+1][n+1];
low=new int[n+1];
visit=new boolean[n+1];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
mat[i][j]=sc.nextInt();
int q=sc.nextInt();
for(int i=0;i<q;i++){
int t1=sc.nextInt(),t2=sc.nextInt();
mat[t1][t2]=mat[t2][t1]=0;
}
prime();
}
public static void main(String[] args) throws Exception {
new Main().init();
}
}
poj 2421(prime)
最新推荐文章于 2020-04-15 20:09:10 发布