Maps TSP

入力

出力

ここに地図が表示されます。
ここにメッセージが表示されます。
-------------------------------------------------------------------------------- import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.Stack; public class TSP { static long minDistance = Long.MAX_VALUE; public static void main(String[] args) throws UnsupportedEncodingException { Set places = new LinkedHashSet(); Map distances = new HashMap(); Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] items = line.split(" "); if (items.length == 3) { String from = items[0]; String to = items[1]; long distance = Long.parseLong(items[2]); places.add(from); distances.put(from + "-" + to, distance); } else { System.out.println("wrong format : " + line); } } scanner.close(); enumurate(new ArrayList(places), new Stack(), distances); System.out.println("終了"); } static void enumurate(List in, Stack out, Map distances) { if (in.isEmpty()) { out.push(out.get(0)); long distance = 0; for (int i = 1; i < out.size(); i++) { distance += distances.get(out.get(i - 1) + "-" + out.get(i)); } if (distance < minDistance) { minDistance = distance; System.out.println(out.toString().replace(", ", " ") + ", " + distance); } out.pop(); } else { for (int i = 0; i < in.size(); i++) { String value = in.get(i); in.remove(i); out.push(value); enumurate(in, out, distances); in.add(i, value); out.pop(); } } } }