版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaohaibo_/article/details/88038574
https://pintia.cn/problem-sets/994805342720868352/problems/994805362341822464
题目大意:
在一颗树里找叶子结点的最小深度 和 这个深度上的叶子结点个数
为什么AC不了呢,有人可以帮我看一下么
#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100010;
vector<int> E[maxn];
int N;
double P, r;
int dep[maxn];
int mindeep = 1e9;
void dfs(int cur, int deep)
{
if (E[cur].empty())
{
dep[cur] = deep;
mindeep = min(mindeep, deep);
}
for (int i = 0; i < E[cur].size(); i ++ ) dfs(E[cur][i], deep + 1);
}
int main ()
{
ios::sync_with_stdio(false);
cin >> N >> P >> r;
r /= 100;
for (int i = 0; i < N; i ++ )
{
int k;
cin >> k;
for (int j = 0; j < k; j ++ )
{
int tmp;
cin >> tmp;
E[i].push_back(tmp);
}
}
dfs(0, 0);
for (int i = 0; i < mindeep; i ++ )
P *= 1 + r;
printf("%.4f ", P);
int cur = 0;
for (int i = 0; i < N; i ++ )
if (dep[i] == mindeep) cur ++;
cout << cur << endl;
return 0;
}