1094 The Largest Generation (25 分)

水~。

题意

输入树的结点个数N (结点编号为1~N)、非叶子结点个数M,然后输入M个非叶子结点各自的孩子结点编号,求结点个数最多的一层(层号是从整体来看的,根结点层号为1),输出该层的结点个数以及层号。

const int N=110;
vector<int> g[N];
int cnt[N];
int maxdep;
int n,m;

void dfs(int root,int dep)
{
    maxdep=max(maxdep,dep);
    cnt[dep]++;

    if(g[root].size() == 0)
    {
        return;
    }

    for(int i=0;i<g[root].size();i++)
    {
        int j=g[root][i];
        dfs(j,dep+1);
    }
}

int main()
{
    cin>>n>>m;

    while(m--)
    {
        int id;
        int k;
        cin>>id>>k;
        for(int i=0;i<k;i++)
        {
            int x;
            cin>>x;
            g[id].pb(x);
        }
    }

    dfs(1,1);

    int maxidx=1;
    for(int i=1;i<=n;i++)
        if(cnt[i] > cnt[maxidx])
            maxidx=i;

    cout<<cnt[maxidx]<<' '<<maxidx<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-02-26 23:45  Dazzling!  阅读(23)  评论(0编辑  收藏  举报