今晚笔试第三题,一直数组越界或语法错误
不知道能不能这么做,dfs从起点到终点再到起点,取路径最小值。一直报数组越界或语法错误,10% public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N,M,S,T; while (scanner.hasNextInt()) { N = scanner.nextInt(); M = scanner.nextInt(); S = scanner.nextInt(); T = scanner.nextInt(); int[][] road = new int[N + 1][N + 1]; for (int i = 0; i < M; i++) { int U = scanner.nextInt(); int V = scanner.nextInt(); int D = scanner.nextInt(); road[U][V] = D; } int[] min = new int[2]; min[0] = Integer.MAX_VALUE; int[] goal = new int[1]; goal[0] = T; dfs(0, S, road, S, goal, min); System.out.println(min[0] + " "); } } public static void dfs(int cnt, int cur, int[][] road, int S, int []T, int []min) { //标识到达终点min[1] = 1; if (cur == T[0] && min[1] == 0) { T[0] = S; min[1] = 1; } else if (cur == T[0] && min[1] == 1) { min[0] = Math.min(min[0], cnt); return; } for (int i = 1;i < road.length;i ++ ) { if (road[cur][i] != 0) { cnt += road[cur][i]; dfs(cnt, i, road, S, T, min); } } }
#笔试题目#