【腾讯Java笔试】9.3日的小问号

有老哥是第二题数组越界的嘛,找不到问题,是我太菜了吗

下面是代码

import java.util.*;

public class Test11 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        List<List<Integer>> nums = new ArrayList<>();
        int[][] dp = new int[n][n];
        for(int i=0;i<m;i++){
            List<Integer> tmp = new ArrayList<>();
            int x = sc.nextInt();
            for(int j=0;j<x;j++)
                tmp.add(sc.nextInt());
            nums.add(tmp);
        }
        for(int k=0;k<nums.size();k++){
            List<Integer> tmp = nums.get(k);
            for(int i=0;i<tmp.size();i++) {
                for (int j = 0; j < tmp.size(); j++) {
                    if (i == j)
                        continue;
                    dp[tmp.get(i)][tmp.get(j)] = 1;
                }
            }
        }

        Deque<Integer> deque = new ArrayDeque<>();
        deque.addLast(0);
        int res = 0;
        dp[0][0] = 1;
        while(!deque.isEmpty()){
            int num = deque.pollFirst();;

            res++;

            for(int i=0;i<n;i++){
                if(i==num)
                    continue;
                if(dp[num][i]==1){
                    if(dp[i][i]==0){
                        deque.addLast(i);
                        dp[i][i] = 1;
                    }
                }

            }
        }
        System.out.println(res);
    }

}


#笔试题目##腾讯#
全部评论
+1,我是并查集越界,只过了20%,是在想不通是哪里越界的
点赞 回复 分享
发布于 2020-09-06 22:08
我也!样例可以过,本地跑也没说越界,就是不懂为什么越界。
点赞 回复 分享
发布于 2020-09-06 22:06

相关推荐

不愿透露姓名的神秘牛友
07-10 12:05
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务