社区讨论

蒟蒻求问:程序遇到未知警告,但是可以运行

学术版参与者 5已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo37tya7
此快照首次捕获于
2023/10/24 02:12
2 年前
此快照最后确认于
2023/10/24 02:12
2 年前
查看原帖
本蒟蒻在写P3884 [JLOI2009]二叉树问题时遇到了问题,在本地编译器中可以编译,但是会有警告(下图) 警报 我去百度上搜了一下,没有找到相似的解答,望各位大佬能够帮帮蒟蒻QWQ
这里贴上源码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
int cen[114];
struct node{
	int cens=0;
	int father=0;
	int left=0;
	int right=0;
}tree[114514];
void add(int a,int b)
{
	if (tree[a].left==0) tree[a].left=b;
	else tree[a].right=b;
	tree[b].father=a;
}
void chuli(int place)
{
	tree[place].cens=tree[tree[place].father].cens+1;
	cen[tree[place].cens]++;
	if (tree[place].left) chuli(tree[place].left);
	if (tree[place].right) chuli(tree[place].right);
}
void que1()
{
	for (int i=100;i>0;i--)
	{
		if (cen[i])
		{
			cout<<i<<endl;
			return;
		}
	}
}
void que2()
{
	int ans=0;
	for (int i=1;i<=100;i++)
	{
		ans=max(ans,cen[i]);
	}
	cout<<ans<<endl;
}
void que3(int x,int y)
{
	int ans=abs(tree[x].cens-tree[y].cens);
	if (tree[x].cens>tree[y].cens)
	{
		for (int i=1;i<=ans;i++)
		{
			x=tree[x].father;
		}
	}
	else
	{
		for (int i=1;i<=ans;i++)
		{
			y=tree[y].father;
		}	
	}
	ans*=2;
//	cout<<ans<<" ";
	while(1)
	{
		if (x==y)
		{
			cout<<ans<<endl;
			return;
		}
//		cout<<ans<<" ";
		ans+=3;
		x=tree[x].father;
		y=tree[y].father;
	}
}
int main()
{
	cin>>n;
	for (int i=0;i<114;i++)cen[i]=0;
	for (int i=1;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		add(x,y);
	}
	chuli(1);
//	for (int i=1;i<=n;i++)
//	{
//		cout<<i<<"cens:"<<tree[i].cens<<" father:"<<tree[i].father<<" left:"<<tree[i].left<<" right:"<<tree[i].right<<endl;
//	}
	
	int x,y;
	cin>>x>>y;
	que1();
	que2();
	que3(x,y);
	return 0;
}

回复

9 条回复,欢迎继续交流。

正在加载回复...