http://poj.org/problem?id=2075
题目大意:
给你一些人名,然后给你n条连接这些人名所拥有的房子的路,求用最小的代价求连接这些房子的花费是否满足要求。
思路:
昨天20分钟的题,输入不小心写错了- -|||||看世界杯半场休息随便看了下发现了。。。。T T
用map进行下标的映射,然后求MST即可。
c++
#include
#include
#include
JAVA:
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
//final 相当于const
public static final int MAXN=500;
//写起来好不习惯
public static int[] fa=new int[MAXN];
public static TreeMap
m=new TreeMap
(); public static edge[] e=new edge[MAXN*MAXN]; public static int find(int cur) { //不能这么写? //return cur == fa[cur] ? cur : fa[cur] = find(fa[cur]); if(cur==fa[cur]) return cur; else return fa[cur] = find(fa[cur]); } public static void main(String[] args) { int len = 0, n; double a; Scanner in=new Scanner(System.in); a=in.nextDouble(); n=in.nextInt(); while((n--)!=0) { String temp=in.next(); m.put(temp, new Integer(len++)); } n=in.nextInt(); double value; for (len = 0; len
a) System.out.print("Not enough cable\n"); else System.out.printf("Need %.1f miles of cable\n", ans); //java 是.1f } } class edge implements Comparable
{ int from,to; double val; public int compareTo(edge x) { //double比较错了一次) BigDecimal data1 = new BigDecimal(this.val); BigDecimal data2 = new BigDecimal(x.val); return data1.compareTo(data2) ; } }