1.4.9.10求为什么啊样例能过
查看原帖
1.4.9.10求为什么啊样例能过
1548725
xiaII楼主2025/1/2 18:58
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
using ll = long long;
const int N = 140;
struct node
{
	int ls, rs;
}a[N]{ 0 };
int d[N]; int ai;
int lenc[5];
bool vis[N];
void dfs(int x, int dep) {
	if (x == 0)return;
	d[dep]++;
	dfs(a[x].ls, dep + 1);
	dfs(a[x].rs, dep + 1);
}
void dfsr1(int x ,int aim) {
	if (x == 0 || x == aim)return;
	vis[x] = 1;
	dfsr1(a[x].ls, aim);
	dfsr1(a[x].rs, aim);
}
void dfsr2(int x, int aim) {
	if (x == 0)return;
	if (vis[x]) {
		ai = x; return;
	}
	dfs(a[x].ls, aim);
	dfs(a[x].rs, aim);
}
void fdfs(int x, int aim , int len, int uu) {
	if (x == 0)return;
	if (x == aim) {
		lenc[uu] = len;
	}
	fdfs(a[x].ls, aim,len + 1, uu);	
	fdfs(a[x].rs, aim,len + 1, uu);
}
int main() {
	ios::sync_with_stdio(false); 
	cin.tie(nullptr); cout.tie(nullptr);
	memset(d, 0, sizeof(d));
	int n; cin >> n;
	for (int i = 1; i <= n - 1; i++) {
		int ro, t;
		cin >> ro;
		if (a[ro].ls)cin >> a[ro].rs;
		else cin >> a[ro].ls;
		//for (int i = 1; i <= 10; i++) {
		//	cout << a[i].ls << ' '<< a[i].rs << ' ';
		//}
		//cout << endl;
	}
	dfs(1, 1);
	int xxx, yyy; cin >> xxx >> yyy;
	dfsr1(1, xxx); dfsr2(1, yyy);
	fdfs(ai, xxx, 0, 1); fdfs(ai, yyy, 0, 2);
	int ans = 0;
	//for (int i = 0; i <= 10; i++) {
	//	cout << d[i] << ' ';
	//}
	//cout << endl;
	for (int i = 1; i <= 100; i++) {
		ans = max(ans, d[i]);
		if (d[i] == 0) {
			cout << i - 1 << endl << ans << endl;
			break;
		}
	}
	cout << lenc[1] * 2 + lenc[2];
	return 0;
}
2025/1/2 18:58
加载中...