一开始自己做的真的很乱,把题目搞错了
借鉴了一下别的大神,自己模仿着写了一遍
其实是一道考图的遍历的题目,用了DFS来做
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int id ,k ;
int b;
int [] record = new int [100];
ArrayList<Integer> list = new ArrayList<Integer>();
HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
for(int i = 0;i<m;i++)
{
id = in.nextInt();
k = in.nextInt();
list = new ArrayList<Integer>();
for(int j = 0;j<k;j++)
list.add(in.nextInt());
map.put(id, list);
}
int p = DFS(map,record,1,0,0);
for(b = 0;b<p;b++)
{
System.out.print(record[b]+" ");
}
System.out.print(record[b]);
}
public static int DFS(HashMap<Integer, ArrayList<Integer>> map,int[]record,int node,int level,int height) {
ArrayList<Integer> list = new ArrayList<Integer>();
list = map.get(node);
if(list ==null)
{
record[level]++;
return height;
}
for(int i = 0;i<list.size();i++)
{
height=Math.max(height, DFS(map,record,list.get(i),level+1,level+1));
}
return height;
}
在这里插入代码片