首页 > 有没有大佬帮忙看看菜鸡第二题的题解哪里有问题,只过了5%
头像
GuloGulo
编辑于 2020-09-06 22:47
+ 关注

有没有大佬帮忙看看菜鸡第二题的题解哪里有问题,只过了5%

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[][] grid = new int[m][n];
        int startIndexi = 0;
        int startIndexj = 0;
        for (int j = 0; j < m; j++) {
            int end = scanner.nextInt();
            for (int i = 0; i < end; i++) {
                int tmp = scanner.nextInt();
                if(tmp == 0){
                    startIndexi = j;
                    startIndexj = i;
                }
                grid[j][tmp] = 1;
            }
        }
        
        Set<Integer> set = new HashSet<>();
        for (int k = 0; k < n - 1; k++) {
            if(grid[startIndexi][k] == 1){
                set.add(k);
                dfs(grid,startIndexi,k,set);
            }
        }
        System.out.println(set.size());

    }
    public static void dfs(int[][] gird, int i, int j, Set<Integer> set){
        if(i < 0 || i >= gird.length || j < 0 || j >= gird[0].length || gird[i][j] == 0)
            return;
        gird[i][j] = 0;
        set.add(j);
        //遇见1 就上下方向和左右方向遍历
        for (int k = 0; k < gird[0].length; k++) {
            if(gird[i][k] == 1){
                set.add(k);
                dfs(gird,i,k,set);
            }
        }
        for (int k = 0; k < gird.length; k++) {
            if(gird[k][j] == 1){
                set.add(j);
                dfs(gird,k,j,set);
            }
        }
    }

}

全部评论

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

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐