本文主要是介绍【C++】1775 - 谁的孙子最多,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:1775 - 谁的孙子最多
类型:vector 树
题目描述:
给定一棵树,其中 1 号结点是根结点,问哪一个结点的孙子结点最多,有多少个。(孙子结点,就是儿子结点的儿子结点。)
输入:
第一行一个整数 N(N≤10000),表示树结点的个数。
此后 N 行,第 i 行包含一个整数Ci,表示 i 号结点儿子结点的个数,随后共 Ci 个整数,分别表示一个 i 号结点的儿子结点(结点编号在1∼N 之间)。
输出:
一行两个整数,表示孙子结点最多的结点,以及其孙子结点的个数,如果有多个,输出编号最小的(本题测试数据确保有解)。
样例:
输入:
5
2 2 3
1 4
0
1 5
0
输出:
1 1
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
vector<int> a[100100];
int main(){int n,c,x,jd,jds=INT_MIN;cin>>n;for(int i=1;i<=n;i++){cin>>c;for(int j=0;j<c;j++){cin>>x;a[i].push_back(x);}}for(int i=1;i<=n;i++){int sum=0;for(int j=0;j<a[i].size();j++){int temp=a[i][j];sum+=a[temp].size();}if(sum>jds){jds=sum;jd=i;}}cout<<jd<<" "<<jds;return 0;
}
题解详细版本
这篇关于【C++】1775 - 谁的孙子最多的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!