UVA Live 6437 Power Plant 最小生成树
2016-04-03 11:31
330 查看
题意:
有许多油井和村庄什么的,让你使得这些村庄能连通一个油井就好了。第一行给你一个数字T代表有T组测试数据,第二行有 M , N , K ,M代表包括油井在内的村庄数,N 代表有N个 两两连通的地方。K代表有K个油井。接下来有N行,每行三个数 u , v, w, 代表 u 号和 v 是连通的 权值为 w。
思路:
以往做的题目都是只有一个源点,这道题油井的数目就是源点,所以源点不唯一。但是不要想复杂啦、其实一开始直接让所有源点并在一、再求最小生成树就好了。
代码:
有许多油井和村庄什么的,让你使得这些村庄能连通一个油井就好了。第一行给你一个数字T代表有T组测试数据,第二行有 M , N , K ,M代表包括油井在内的村庄数,N 代表有N个 两两连通的地方。K代表有K个油井。接下来有N行,每行三个数 u , v, w, 代表 u 号和 v 是连通的 权值为 w。
思路:
以往做的题目都是只有一个源点,这道题油井的数目就是源点,所以源点不唯一。但是不要想复杂啦、其实一开始直接让所有源点并在一、再求最小生成树就好了。
代码:
import java.util.Scanner; import java.util.Comparator; import java.util.Arrays; import java.text.DecimalFormat; class Node{ public int u, v; public int w; } class mycmp implements Comparator<Node>{ public int compare(Node A, Node B){ if(A.w == B.w) return 0; else if(A.w < B.w) return -1; else return 1; } } public class Main { final static int MAXN = 40000 + 13; final static int INF = 0x3f3f3f3f; static int[] pre = new int[MAXN]; static Node[] map = new Node[MAXN]; public static void main(String[] args){ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); int kas = 1; while(T != 0){ int N = sc.nextInt(); int M = sc.nextInt(); int K = sc.nextInt(); int power = sc.nextInt(); mst(N); for(int i = 0; i < K - 1; i++){ int num = sc.nextInt(); pre[num] = power; } for(int i = 1; i <= M; i++){ map[i] = new Node(); map[i].u = sc.nextInt(); map[i].v = sc.nextInt(); map[i].w = sc.nextInt(); } Arrays.sort(map, 1, M + 1, new mycmp()); int ans = ksu(N, M, K); System.out.println("Case #" + kas + ": " + ans); kas++; T--; } sc.close(); } public static int ksu(int N, int M, int k){ int cnt = 0; int ans = 0; for(int i = 1; i <= M; i++){ int fu = Find(map[i].u); int fv = Find(map[i].v); if(fu != fv){ cnt++; pre[fv] = fu; ans += map[i].w; } if(cnt == N - k){ return ans; } } return 0; } public static int Find(int x){ return x == pre[x] ? x : (pre[x] = Find(pre[x])); } public static void mst(int N){ for(int i = 1; i <= N; i++){ pre[i] = i; } } }
相关文章推荐
- python导出函数方法
- 构造一颗表达式树
- 用CSS border相关属性画三角形
- 入栈问题
- HTML学习(八)——多媒体
- phpcms authkey泄露漏洞
- mysql5.7缺少的两个库文件->资源(binary_log_funcs.h)(binary_log_types.h)
- php求解n位格雷码的输出
- 171. Excel Sheet Column Number
- Linux 系统监控概述
- Java如何实现WebSocket通讯问题(转载)
- 队列
- Layout
- xftp 连接Linux中文乱码的解决方法
- 关于无限级理解,及其树形结构
- 数学表达式配对栈
- 趣味编程_打印余弦函数
- JsonDataObjects 简单实用
- 利用PyMysql访问windows下的MySql数据库
- Linux命令工具 top命令详解