第九个点过不了,代码写得有点烂,请大佬帮忙看一下
查看原帖
第九个点过不了,代码写得有点烂,请大佬帮忙看一下
1189413
PURE_LOVE楼主2024/11/1 00:59
using namespace std;
struct nd
{
	int f;
	int l;
	int r;
};
vector<int>brr;
vector<int>cp1;
vector<int>cp2;
vector<nd>xrr;
int maxdfs(int x, int ceng)
{
	brr[ceng]++;
	if (xrr[x].l == NULL && xrr[x].r == NULL)
	{
		return 0;
	}
	else if (xrr[x].r == NULL && xrr[x].l != NULL)
	{
		return maxdfs(xrr[x].l, ceng + 1);
	}
	else if (xrr[x].r != NULL && xrr[x].l == NULL)
	{
		return maxdfs(xrr[x].r, ceng + 1);
	}
	else
	{
		return max(maxdfs(xrr[x].l, ceng + 1), maxdfs(xrr[x].r, ceng + 1));
	}
	return 0;
}
int ix = 0;
int find()
{
	for (; ix < cp1.size(); ix++)
	{
		for (int jx = 0; jx < cp2.size(); jx++)
		{
			if (cp1[ix] == cp2[jx])
			{
				return 1;
			}
		}
	}
	ix--;
	return 0;
}
int cmp(int a, int b)
{
	return a > b ? a : 0;
}
int n1 = 0, n2 = 0;
void hs(int x, int y)
{
	n1 = cp1.size();
	n2 = cp2.size();
	if (n1 == 0)
	{
		cp1.push_back(x);
	}
	else if (x != cp1[n1 - 1])
	{
		cp1.push_back(x);
	}
	if (n2 == 0)
	{
		cp2.push_back(y);
	}
	else if (y != cp2[n2 - 1])
	{
		cp2.push_back(y);
	}
	if (find())
	{
		return;
	}
	if (x != 1)
	{
		if (xrr[x].f != NULL)
		{
			x = xrr[x].f;
		}
	}
	if (y != 1)
	{
		if (xrr[y].f!= NULL)
		{
			y = xrr[y].f;
		}
	}
	hs(x, y);
}
int main()
{
	int n;
	cin >> n;
	int tempf, temps;
	xrr.resize(n+1);
	brr.resize(9);
	xrr[1].f = 0;
	for (int i = 1; i < n; i++)
	{
		cin >> tempf >> temps;
		if (xrr[tempf].l == NULL)
		{
			xrr[tempf].l = temps;
		}
		else
		{
			xrr[tempf].r = temps;
		}
		xrr[temps].f = tempf;
	}
	maxdfs(xrr[1].l, 2);
	maxdfs(xrr[1].r, 2);
	for (int i = 8; i >= 0; i--)
	{
		if (brr[i] != 0)
		{
			cout << i << endl;
			break;
		}
	}
	sort(brr.begin(), brr.end(), cmp);
	cout << brr[0] << endl;
	int x, y;
	cin >> x >> y;
	hs(x, y);
	int sum = 0;
	n1 = cp1.size();
	n2 = cp2.size();
	for (int i = 0; i < n1-1; i++)
	{
		sum += 2;
	}
	for (int i = 0; i < n2; i++)
	{
		if (cp2[i] == cp1[ix])
		{
			break;
		}
		sum += 1;
	}
	cout << sum << endl;
}```
2024/11/1 00:59
加载中...