有没有大佬帮忙看一下,通过率为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;
}
}
京公网安备 11010502036488号