最小生成树prim
2012-11-14 10:55
369 查看
public class prim { static int M = 1000; public static void main(String[] args) { int graph[][] = { { M, 6, 1, 5, M, M }, { 6, M, 5, M, 3, M }, { 1, 5, M, 5, 6, 4 }, { 5, M, 5, M, M, 2 }, { M, 3, 6, M, M, 6 }, { M, M, 4, 2, 6, M } }; int start = 0; int n = graph.length; int[] visited = new int ; System.out.println(prim(graph, visited, start, n)); } public static int prim(int[][] graph, int[] visited, int start, int n) { int pos, result = 0; int min = Integer.MAX_VALUE; int[] low = new int ; // 从某点开始,分别标记和记录该点 visited[start] = 1; pos = start; System.out.print(pos + " "); // 第一次给low数组赋值 for (int i = 0; i < n; i++) if (i != pos) low[i] = graph[pos][i]; // 再运行n-1次 for (int i = 0; i < n - 1; i++) { // 找出最小权值并记录位置 min = Integer.MAX_VALUE; for (int j = 0; j < n; j++) if (visited[j] == 0 && min > low[j]) { min = low[j]; pos = j;//记录最小值点 } // 最短路径 result += min; // 求出最小值后,设置为已经访问 visited[pos] = 1; // 更新权值 for (int j = 0; j < n; j++) if (visited[j] == 0 && low[j] > graph[pos][j]) low[j] = graph[pos][j]; System.out.print(pos + " "); } return result; } }
相关文章推荐
- Ural 1982 Electrification Plan (prim最小生成树)
- 最小生成树(Prim)(普利姆最小生成树)
- 最小生成树Prim算法理解
- hdu 4463 最小生成树 prim
- hdoj 1875 畅通工程再续 ( 最小生成树--prim )
- 最小生成树-普林算法(Prim)/克鲁斯卡尔算法(Kruskal)
- Prim 算法求最小生成树 O(n^2)
- HDOJ---1301 Jungle Roads[最小生成树--Prim()]
- prim 最小生成树算法 java实现
- 贪心算法 最小生成树prim与单源最短路径dijkstra
- NYOJ1239 引水工程(最小生成树,Prim)
- 最小生成树 prim
- HDU2489 Minimal Ratio Tree 【DFS】+【最小生成树Prim】
- 贪心算法——Prim最小生成树
- poj 2485 Highways -----最小生成树。prim
- 最小生成树算法(prim&kruskal)
- 最小生成树——普利姆算法(prim)
- 【模板】Prim+堆优化 最小生成树
- poj 1751 Highways 最小生成树 prim
- matlab练习程序(Prim最小生成树)