Untitled
unknown
plain_text
a year ago
2.5 kB
6
Indexable
import java.util.*; class FrogJumps { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); for (int caseNumber = 1; caseNumber <= t; caseNumber++) { int n = scanner.nextInt(); int[][] leaves = new int[n][3]; for (int i = 0; i < n; i++) { for (int j = 0; j < 3; j++) { leaves[i][j] = scanner.nextInt(); } } int[] result = frogJumps(n, leaves); System.out.println(result[0] + " " + result[1]); } } static int[] frogJumps(int n, int[][] leaves) { int[][] distances = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) { distances[i][j] = 0; } else { int dist = calculateDistance(leaves[i], leaves[j]); if (dist <= 40) { distances[i][j] = 0; } else if (dist <= 90) { distances[i][j] = 1; } else { distances[i][j] = Integer.MAX_VALUE; // Ensure jumps greater than 90 are not possible. } } } } for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (distances[i][k] != Integer.MAX_VALUE && distances[k][j] != Integer.MAX_VALUE) { distances[i][j] = Math.min(distances[i][j], distances[i][k] + distances[k][j]); } } } } int minJumps = distances[0][n - 1]; int shortJumps = 0; for (int i = 1; i < n - 1; i++) { int totalJumps = distances[0][i] + distances[i][n - 1]; if (totalJumps < minJumps) { minJumps = totalJumps; shortJumps = distances[0][i]; } } if (minJumps == Integer.MAX_VALUE) { return new int[]{-1, -1}; } else { return new int[]{minJumps, shortJumps}; } } static int calculateDistance(int[] leaf1, int[] leaf2) { int x1 = leaf1[0]; int y1 = leaf1[1]; int x2 = leaf2[0]; int y2 = leaf2[1]; return (int) Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); } }
Editor is loading...