0分求助
查看原帖
0分求助
1066759
wyyaybmq楼主2023/11/4 15:09
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int n,d,tmp,step=-1,flag=1,ans;
bool bj;
queue<int>bfs;
struct s{
	vector<int> c;
	int f;
}num[100009];
int main(){
	cin>>n>>d;
	for(int i=1;i<n;++i){
		cin>>tmp;
		cin>>ans;
		num[tmp].c.push_back(ans);
	}
	ans=0;
	bfs.push(1);
	while(!bfs.empty()){
  		if(bfs.front()==flag){
  			++step;
  			bj=1;
		}
		tmp=bfs.front();
//		cout<<tmp<<' '<<step<<' '<<flag<<endl;
		bfs.pop();
		++ans;

		for(int i=0;i<num[tmp].c.size();++i){
			bfs.push(num[tmp].c[i]);
//			cout<<num[tmp].c.size()<<endl;
		}
		if(bj){
			bj=0;
			flag=bfs.back();
		}
		if(step==d) break;
	}
	cout<<ans-1;
}


2023/11/4 15:09
加载中...