UVA Live 6437 Power Plant 最小生成树
来源:互联网 发布:人才市场管理系统java 编辑:程序博客网 时间:2024/06/07 23:29
题意:
有许多油井和村庄什么的,让你使得这些村庄能连通一个油井就好了。第一行给你一个数字T代表有T组测试数据,第二行有 M , N , K ,M代表包括油井在内的村庄数,N 代表有N个 两两连通的地方。K代表有K个油井。接下来有N行,每行三个数 u , v, w, 代表 u 号和 v 是连通的 权值为 w。
思路:
以往做的题目都是只有一个源点,这道题油井的数目就是源点,所以源点不唯一。但是不要想复杂啦、其实一开始直接让所有源点并在一、再求最小生成树就好了。
代码:
<pre name="code" class="java">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;}}}
0 0
- UVA Live 6437 Power Plant 最小生成树
- uva 6437 - Power Plant【最小生成树】
- Uva 6437 - Power Plant 裸最小生成树
- LA 6437 Power Plant (prim最小生成树)
- UVALive 6437 Power Plant(最小生成树)
- [最小割] Codeforces 434D. Nanami's Power Plant
- uva6437 Power Plant
- UVA 10369 最小生成树
- uva 10397(最小生成树)
- uva 10034(最小生成树)
- uva 10369(最小生成树)
- UVa 1395 最小生成树
- uva 1151最小生成树
- uva 10369 最小生成树
- uva 4138【最小生成树prime算法】
- UVA 10048 Audiophobia 最小生成树
- uva 10369 - Arctic Network(最小生成树)
- uva 10034 Freckles(最小生成树Kruskal)
- jvm memory
- 剑指offer-面试题27:二叉搜索树与双向链
- 求阶乘
- MySQL 主从复制与读写分离概念及架构分析
- ubuntu 新手入门
- UVA Live 6437 Power Plant 最小生成树
- 1007. 素数对猜想 (20)——做题纪录
- javascript入门
- ZOJ 3712 Hard to Play
- 我的设置 of Ubuntu
- 近期Android学习感受
- haproxy+keepalived 主备
- 打开文件
- [枚举+二分] LightOJ 1127 - Funny Knapsack