zoukankan      html  css  js  c++  java
  • 求树的某一层的节点最多

    #include <bits/stdc++.h>
    using namespace std;
    #define N 110
    #define P pair<int,int>
    int  n,m;
    int lev[N],head[N],cnt=0;
    struct Node{
         int fr,to,next;
         Node(){}
         Node(int fr,int to,int next):fr(fr),to(to),next(next){
         }
    }nod[N*N];
    void init(){
        cnt  = 0;
        for(int  i=0;i<N;i++) head[i] = -1;
    }
    void add(int fr,int to){
        nod[cnt].fr =fr;
        nod[cnt].to=to;
        nod[cnt].next = head[fr];
        head[fr] = cnt++;
    }
    int cnt1=1,cnt2=0;
    void bfs(int rt){
        queue<P>q;
        q.push(P(rt,1));
        while(!q.empty()){
            P p = q.front();q.pop();
            int u=p.first,x=p.second;
            lev[x]++;
            for(int i =head[u];i!=-1;i=nod[i].next){
                int v = nod[i].to;
                q.push(P(v,x+1));
            }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        int  k,num,x;
        init();
        for(int i =0;i<m;i++){
            scanf("%d%d",&num,&k);
            for(int j=0;j<k;j++){
                scanf("%d",&x);
                add(num,x);//有向边
            }
        }
        bfs(1);
        int maxx = 0,j=1;
        for(int i =1;i<N;i++){
            if(maxx<lev[i]){
                j=i;
                maxx  =lev[i];
            }
        }
        printf("%d %d
    ",maxx,j);
        return 0;
     } 
  • 相关阅读:
    用栈消除递归调用,实现DFS【伪代码】
    B树残缺版
    lvm
    RAID独立冗余磁盘阵列
    压缩、归档
    磁盘、文件系统
    setfacl、getfacl
    locate,find
    vim编辑器
    sed流编辑器
  • 原文地址:https://www.cnblogs.com/tingtin/p/11550857.html
Copyright © 2011-2022 走看看