题意:有几个村庄,要修最短的路,使得这几个村庄连通。但是现在已经有了几条路,求在已有路径上还要修至少多长的路。

分析:用Prim求最小生成树,将已有路径的长度置为0,由于0是最小的长度,所以一定会被Prim选中加入最小生成树。

package Map;

import java.util.Scanner;

/**
* Prime
*/
public class Poj_2421_Prim { static int MAXVEX = 200;
static int n, m;
static int[][] arc = new int[MAXVEX][MAXVEX];
static int visited[] = new int[MAXVEX];//判断是否加入生成树 public static int prime() { int min, i, j, k, sum = 0;
visited[1] = 1; for (i = 2; i <= n; i++) {
min = 1000000;
k = 0;
for (j = 1; j <= n; j++) {
if (visited[j] == 0 && arc[1][j] < min) {
min = arc[1][j];
k = j;
}
} sum += min;
visited[k] = 1;
for (j = 1; j <= n; j++) {
if (visited[j] == 0 && arc[1][j] > arc[k][j]) {
arc[1][j] = arc[k][j];
}
}
}
return sum;
} public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt(); for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
arc[i][j] = sc.nextInt();
}
arc[i][i] = 1000000;
} m = sc.nextInt(); //如果路径存在,则置为0.这样
for (int i = 1; i <= m; i++) {
int s = sc.nextInt();
int e = sc.nextInt();
arc[s][e] = 0;
arc[e][s] = 0;
} System.out.println(prime());
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
  2. equals变量在前面或者在后面有什么区别吗?这是一个坑点
  3. Java面试常见知识点总结(一)
  4. android之fragment
  5. 一键安装lamp环境 centos
  6. 浅谈自定义UITextField的方法
  7. Excel VBA自动添加证书
  8. 亚马逊云服务之CloudFormation
  9. javascript/jquery 常见功能实现(持续更新...)
  10. 服务器能访问共享,但是ping不通解决方案
  11. MCADEx Tools 6.3下载地址
  12. OS X 使用技巧——在Finder窗口标题栏上显示路径
  13. BZOJ_2434_[NOI2011]_阿狸的打字机_(AC自动机+dfs序+树状数组)
  14. Android Http请求失败解决方法
  15. 【翻译】Sencha Ext JS 5公布
  16. Android Intent 其中一个分析
  17. SQLite数据库_实现简单的增删改查
  18. 【Leetcode】Shortest Palindrome
  19. Batch Normalization&amp;Dropout浅析
  20. 02:安装 Kerberos

热门文章

  1. HttpUtils工具类
  2. .babelrc参数小解
  3. css异步加载
  4. 如何隐藏tomcat命令窗口
  5. 正则表达式java,javaScript应用
  6. linux基础(3)-java安装
  7. 直播P2P技术1-技术入门
  8. ACM的输入输出总结
  9. 机器学习之K-近邻(KNN)算法
  10. 03_01_基本操作_增(insert)