竞赛讨论区 > A题,不知道那里有错误
头像
沉默201712102315954
编辑于 2020-07-30 22:25
+ 关注

A题,不知道那里有错误

通过了81.25%,错误是“数组越界等非法访问情况”
求帮助
import java.util.*;
 
/*
 * public class Point {
 *   int x;
 *   int y;
 * }
 */
 
public class Solution {
    /**
     * 返回牛牛能到达终点且不被淘汰的路径数
     * @param n int整型
     * @param Edge Point类一维数组
     * @param f int整型一维数组
     * @return int整型
     */
    List<Integer>[] list;
    int res;
    int[] f;
    boolean[] visit;
 
    public int solve(int n, Point[] Edge, int[] f) {
        // write code here
        list = new List[n+1];
        visit = new boolean[n+1];
        this.f = f;
        for (int i = 0; i < n; i++) {
            list[i] = new ArrayList<>();
        }
        for (Point point : Edge) {
            list[point.x - 1].add(point.y - 1);
            list[point.y - 1].add(point.x - 1);
        }
        res = 0;
        visit[0] = true;
        dfs(0, 0);
        return res;
    }
 
    public void dfs(int x, int g) {
        if (f[x] == 1) {
            g++;
        }
        List<Integer> list1 = list[x];
        int y = 0;
        for (Integer integer : list1) {
            if (!visit[integer]) {
                visit[integer] = true;
                y++;
                dfs(integer, g);
            }
        }
        if (y == 0 && g <= 2) {
            res++;
        }
    }
}


全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐