MCPcopy Create free account
hub / github.com/algorithmzuo/algorithm-journey / main

Method main

src/class138/Code03_DesertKing.java:81–123  ·  view source on GitHub ↗
(String[] args)

Source from the content-addressed store, hash-verified

79 }
80
81 public static void main(String[] args) throws IOException {
82 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
83 StreamTokenizer in = new StreamTokenizer(br);
84 PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
85 in.nextToken();
86 n = (int) in.nval;
87 while (n != 0) {
88 for (int i = 1; i <= n; i++) {
89 in.nextToken();
90 x[i] = (int) in.nval;
91 in.nextToken();
92 y[i] = (int) in.nval;
93 in.nextToken();
94 z[i] = (int) in.nval;
95 }
96 for (int i = 1; i <= n; i++) {
97 for (int j = 1; j <= n; j++) {
98 if (i != j) {
99 dist[i][j] = Math.sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
100 cost[i][j] = Math.abs(z[i] - z[j]);
101 }
102 }
103 }
104 double l = 0, r = 100, x, ans = 0;
105 while (l < r && r - l >= sml) {
106 x = (l + r) / 2;
107 // 如果最小生成树的权值 <= 0,达标,左侧二分找寻更小比值
108 // 如果最小生成树的权值 > 0,不达标,右侧二分找寻更大比值
109 if (prim(x) <= 0) {
110 ans = x;
111 r = x - sml;
112 } else {
113 l = x + sml;
114 }
115 }
116 out.printf("%.3f\n", ans);
117 in.nextToken();
118 n = (int) in.nval;
119 }
120 out.flush();
121 out.close();
122 br.close();
123 }
124
125}

Callers

nothing calls this directly

Calls 4

primMethod · 0.95
sqrtMethod · 0.80
flushMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected