zoukankan      html  css  js  c++  java
  • 1004 Counting Leaves

    A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.

    Input Specification:

    Each input file contains one test case. Each case starts with a line containing 0, the number of nodes in a tree, and M (<), the number of non-leaf nodes. Then M lines follow, each in the format:

    ID K ID[1] ID[2] ... ID[K]
    

    where ID is a two-digit number representing a given non-leaf node, K is the number of its children, followed by a sequence of two-digit ID's of its children. For the sake of simplicity, let us fix the root ID to be 01.

    The input ends with N being 0. That case must NOT be processed.

    Output Specification:

    For each test case, you are supposed to count those family members who have no child for every seniority level starting from the root. The numbers must be printed in a line, separated by a space, and there must be no extra space at the end of each line.

    The sample case represents a tree with only 2 nodes, where 01 is the root and 02 is its only child. Hence on the root 01 level, there is 0 leaf node; and on the next level, there is 1 leaf node. Then we should output 0 1 in a line.

    Sample Input:

    2 1
    01 1 02
    

    Sample Output:

    0 1

    import java.util.* ;
    
    public class Main{
        static class Node{
            int id;
            Queue<Node> children;
            Node(int id){
                this.id=id;
            }
        }
        static HashMap<Integer,Node> tree;
        static int N;//树的节点个数
        static int M;//有孩子的节点数
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            N = sc.nextInt();
            M = sc.nextInt();
            tree = new HashMap<>();
            for(int i=0;i<M;i++){
                int id=sc.nextInt();
                int K = sc.nextInt();
                Node node = new Node(id);
                Queue<Node> children = new LinkedList<>();
                for(int j=0;j<K;j++){
                    Node no = new Node(sc.nextInt());
                    children.offer(no);
                }
                node.children=children;
                tree.put(id,node);
            }
            Queue<Node> que =new LinkedList<>();
            que.add(tree.get(1));
            BFS(que);
        }
        
        public static void BFS(Queue<Node> que){
            int len = 0;
            Queue<Node> NextQue = new LinkedList<>();
            while(que.size()!=0){
                Node node = que.poll();
                if(tree.size()==0||!tree.containsKey(node.id)){
                    len++;
                }else{
                    NextQue.addAll(tree.get(node.id).children);
                }
            }
            if(NextQue.size()==0){
                System.out.print(len);
            }
            else {
                System.out.print(len+" ");
                BFS(NextQue);
            }
        }
    }

    思路为BFS。

    HashMap建树。

  • 相关阅读:
    php数组的使用
    php数组的定义、php数组的类型
    小米手机安卓手机微信里出现意外的边框线,border:0也没用
    php实现WEB在线文件管理器
    安装了https ssl证书,但浏览器显示并非完全安全(此页面内容部分不安全)
    thinkphp无限分类模块实现
    常见的移动web问题,终端触摸交互,各种bug坑如何解决
    现代都市风 移动端可折叠导航菜单
    电器类电商网站分类大菜单,配色超舒服~
    帮助中心模板框架--简约小清新风格
  • 原文地址:https://www.cnblogs.com/godoforange/p/10903084.html
Copyright © 2011-2022 走看看