prim 最小生成树算法 java实现
2012-03-29 12:42
731 查看
import java.io.BufferedInputStream; import java.util.Scanner; public class Prim { static int[][] arr; static boolean flag[]; //用来标记节点i是否被覆盖 static int n; static int sum; static final int maxInt = Integer.MAX_VALUE; public static void main(String[] args) { Scanner s = new Scanner(new BufferedInputStream(System.in)); while(s.hasNextInt()){ n = s.nextInt(); arr = new int[n+1][n+1]; flag = new boolean[n+1]; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) arr[i][j] = s.nextInt(); //从下标1开始存储 sum = 0; flag[1] = true; //选取第一个节点 for(int k=1; k<n; k++){ //循环n-1次 int min = maxInt,min_i = 0; for(int i=1; i<=n; i++){ if( !flag[i] && arr[1][i] < min){ min = arr[1][i]; min_i = i; } } System.out.println(" min_i:"+min_i); flag[min_i] = true; // 覆盖节点 for(int i=1; i<=n; i++){ //更新未覆盖节点的距离,每加入一个点就更新 if( !flag[i] && arr[1][i] > arr[min_i][i]) arr[1][i] = arr[min_i][i]; System.out.print("arr[1]["+i+"]"+arr[1][i]+" "); } System.out.println(); sum += arr[1][min_i];//加上权值 } System.out.println(sum); } } }
相关文章推荐
- java实现图的最小生成树(MST)的普利姆(Prim)算法
- Prim最小生成树算法详解以及java实现源代码
- prim 最小生成树算法 java实现
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)
- 算法java实现--贪心算法--最小生成树问题--Kruskal算法
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- Prim 算法实现最小生成树 打印出对应的最小生成树和最小生成树的总权值
- JAVA的最小生成树(prim)算法
- java 普里姆(Prim)算法求图的最小生成树
- acm pku 1287 Networking的Prim最小生成树算法实现
- 最小生成树算法——Kruskal算法Java实现
- Prim最小生成树的最小堆的java代码实现
- 算法java实现--贪心算法--最小生成树问题--Prim算法
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- java实现图的最小生成树(森林)MST克鲁斯卡尔(Kruskal)算法
- python实现prim 最小生成树算法
- 最小生成树prim java 实现
- 图——Prim最小生成树算法(矩阵方式实现)
- JAVA实践优化Prim最小生成树算法
- Java 版 Prim 算法求最小生成树