有没有大佬帮忙看一下,通过率为82.35%,提示请检查是否存在数组越界等非法访问情况,但是死活找不出bug在哪
import java.util.*; /* * public class Point { * int x; * int y; * } */ public class Solution { /** * 牛牛经过的房间数。 * @param n int整型 * @param x int整型 * @param Edge Point类一维数组 * @return int整型 */ int[][] dist; boolean[][] vis; Set<Integer>[] edge; public void dfs(int flag,int cur){ //System.out.println(cur) for(int child:edge[cur]){ if(vis[flag][child]==false){ vis[flag][child]=true; dist[flag][child]=dist[flag][cur]+1; dfs(flag,child); } } } public int solve (int n, int x, Point[] Edge) { // write code here if(x==1) return 0; int res=0; dist=new int[2][n+10]; vis=new boolean[2][n+10]; edge=new Set[n+10]; for(int i=1;i<=n;i++) edge[i]=new HashSet<>(); for(Point p:Edge){ edge[p.x].add(p.y); edge[p.y].add(p.x); } vis[0][1]=true; vis[1][x]=true; dist[0][1]=1; dist[1][x]=1; dfs(0,1); dfs(1,x); for(int i=1;i<=n;i++){ if(dist[0][i]>dist[1][i]) res=Math.max(res,dist[0][i]); } return res; } }