刚开始想存father数组,然后第6点超时,所以改了bfs
输出一定要用double,float就错,还挺奇怪
#include <bits/stdc++.h>
using namespace std;
int main(){
int num;
double rootprice,rate;
cin>>num>>rootprice>>rate;
vector<vector<int>> g(num);
for(int i=0;i<num;i++){
int n;
cin>>n;
for(int j=0;j<n;j++){
int id;
cin>>id;
g[i].push_back(id);
}
}
queue<pair<int,int>> q;
q.push(pair<int,int>(0,0));
int minlevel=9999,cnt=0;
while(!q.empty()){
auto fir=q.front();
q.pop();
if(g[fir.first].size()==0){
if(minlevel==9999)minlevel=fir.second;
else if(fir.second>minlevel)break;
cnt++;
}
for(int i=0;i<g[fir.first].size();i++)q.push(pair<int,int>(g[fir.first][i],fir.second+1));
}
printf("%.4lf %d",rootprice*pow(1+rate/100.0,minlevel),cnt);
}
本文探讨了使用宽度优先搜索(BFS)算法解决树形结构问题的方法,通过实例展示了如何计算从根节点到叶节点的最短路径及相应节点数。文章详细介绍了算法实现过程,并强调了在输出结果时使用double类型的重要性。
1968

被折叠的 条评论
为什么被折叠?



