PAT1005-The Largest Generation
2016-03-08 20:24
232 查看
题意:
家族组成树,求孩子最多的一层。
解答:
本题关键两个问题:
1、用什么数据结构储存数据
2、怎么把数据读取出来处理
定义了一个节点对象存放数据,在取出来的时候使用了队列,加入队列的是这一层所有的孩子,也就是说要先把队列的父类全部取出来,然后将下一代全部压入,没这么操作一次,深度加1,并且保存最大孩子数。
此处注意使用addAll(),可以方便不少。
还要注意节点对象的定义了使用了数组。
具体java代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int N=in.nextInt();
int M=in.nextInt();
Node[] list=new Node[N+1];
for(int i=0;i<N+1;i++){
list[i]=new Node();
}
for(int i=0;i<M;i++){
int temp=in.nextInt();
int n=in.nextInt();
for(int j=0;j<n;j++){
list[temp].children.add(in.nextInt());
}
}
in.close();
Queue<Integer> q=new LinkedList();
int max=1;
int maxLevel=1;
int level=1;
q.add(1);
while(!q.isEmpty()){
int k=q.size();
for(int i=0;i<k;i++){
int node=q.poll();
q.addAll(list[node].children);
}
level++;
int t=q.size();
if(t>max){
max=t;
maxLevel=level;
}
}
System.out.println(max+" "+maxLevel);
}
}
class Node{
ArrayList<Integer> children=new ArrayList();
}
家族组成树,求孩子最多的一层。
解答:
本题关键两个问题:
1、用什么数据结构储存数据
2、怎么把数据读取出来处理
定义了一个节点对象存放数据,在取出来的时候使用了队列,加入队列的是这一层所有的孩子,也就是说要先把队列的父类全部取出来,然后将下一代全部压入,没这么操作一次,深度加1,并且保存最大孩子数。
此处注意使用addAll(),可以方便不少。
还要注意节点对象的定义了使用了数组。
具体java代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int N=in.nextInt();
int M=in.nextInt();
Node[] list=new Node[N+1];
for(int i=0;i<N+1;i++){
list[i]=new Node();
}
for(int i=0;i<M;i++){
int temp=in.nextInt();
int n=in.nextInt();
for(int j=0;j<n;j++){
list[temp].children.add(in.nextInt());
}
}
in.close();
Queue<Integer> q=new LinkedList();
int max=1;
int maxLevel=1;
int level=1;
q.add(1);
while(!q.isEmpty()){
int k=q.size();
for(int i=0;i<k;i++){
int node=q.poll();
q.addAll(list[node].children);
}
level++;
int t=q.size();
if(t>max){
max=t;
maxLevel=level;
}
}
System.out.println(max+" "+maxLevel);
}
}
class Node{
ArrayList<Integer> children=new ArrayList();
}
相关文章推荐
- try/catch/finally详解+示例
- 剑指offer——面试题9计算斐波纳切第n个数
- 剑指offer——面试题9计算斐波纳切第n个数
- Android Fragment 真正的完全解析(下)
- git使用详细介绍
- 编写一个stm32 svc关中断函数
- Windows 下java环境变量的配置(Windows7 ,8,8.1,10)
- 个人项目—数组求和
- python中有关矩阵的创建、求逆、转置
- 关于使用Java的事情
- HDU杭电 1027 Ignatius and the Princess II
- 移动设备自定义面板切换
- jq延迟的使用
- JAVA 字符流与字节流的区别
- linux 文件描述符的一些底层实现
- Java序列化
- 歌曲背后的故事《可回答音乐相关的问题》
- stm32内联汇编
- CodeForces 132C Logo Turtle (记忆化搜索)
- 1037. Magic Coupon (25)