(java)Pat刷题日记-1004 Counting Leaves (30 分)

一开始自己做的真的很乱,把题目搞错了

借鉴了一下别的大神,自己模仿着写了一遍
其实是一道考图的遍历的题目,用了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;
	
}

在这里插入代码片

猜你喜欢

转载自blog.csdn.net/qq_15556537/article/details/87395637