有人可以帮我debug一下吗
查看原帖
有人可以帮我debug一下吗
1074812
Jared0503楼主2024/7/19 12:40
#include<bits/stdc++.h>
using namespace std;
struct node{
	bool vis;
	int Val,lc,rc,d;
}tree[110];
int q;
int get_d(int step/*深度*/,int k/*节点*/)
{
	int maxn=0;
	tree[k].d=step; //记录深度 
	if(tree[k].lc) maxn=max(get_d(step+1,tree[k].lc),maxn); //遍历左子树
	if(tree[k].rc) maxn=max(get_d(step+1,tree[k].rc),maxn); //遍历右子树
	if(!tree[k].lc&&!tree[k].rc) return step; //如果没有子树
	return maxn; 
}
int E[110]; 
void get_e(int step/*深度*/,int k/*节点*/)
{
	E[step]++; //宽度加一 
	if(tree[k].lc) get_e(step+1,tree[k].lc);
	if(tree[k].rc) get_e(step+1,tree[k].rc);
}
int rush(int p)
{
	get_e(1,1);
	sort(E,E+p);
	return E[p-1];
}
int get_way(int step,int k,int v/*目标节点*/) //这里求debug 
{
	tree[k].vis=1; //标记 
	if(k==v) return step-1;
	if(tree[k].lc&&!tree[k].vis) get_way(step+1,tree[k].lc,v);
	if(tree[k].rc&&!tree[k].vis) get_way(step+1,tree[k].rc,v);
	if(!tree[k].lc&&!tree[k].rc) return 0; //如果没有子树
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n-1;i++)
	{
		int u,v;
		cin>>u>>v;
		if(tree[u].lc==0) tree[u].lc=v,tree[u].Val=i+1; //构建树 
		else tree[u].rc=v,tree[u].Val=i+1;
	}
	int x,y;
	cin>>x>>y; //获取要抓取的节点 
	int k=get_d(1,1);
	cout<<k<<endl<<rush(k)<<endl<<get_way(1,1,x)*2-get_way(1,1,y);
	
	return 0;
}

球球了!!!

2024/7/19 12:40
加载中...