比赛 20241128 评测结果 WWWWWWWWWWWWWWWWWWWW
题目名称 猴猴的比赛 最终得分 0
用户昵称 孤独的氢离子 运行时间 1.240 s
代码语言 C++ 内存使用 4.14 MiB
提交时间 2024-11-28 10:09:28
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n;
struct tree{
	int fa;
	int sum;
	int ch;
}t1[100010],t2[100010]; 
int main()
{
	freopen("monkeyclim.in","r",stdin);
	freopen("monkeyclim.out","w",stdout);
	cin>>n;
	for(int i=1;i<n;i++)
	{
		int a,b;
		cin>>a>>b;
		t1[b].fa=a;
		t1[a].ch++;
	}
	for(int i=1;i<n;i++)
	{
		int a,b;
		cin>>a>>b;
		t2[b].fa=a;
		t2[a].ch++;
	}
	for(int i=n;i>=1;i--)
	{
		while(t1[i].ch!=0&&t2[i].ch!=0)
		{
			i--;
		}
		int r1=t1[i].fa;
		int r2=t2[i].fa; 
		int k=1;
		while(r1>=1&&r2>=1)
		{
			if(r1==r2)
			{
//				cout<<r1<<" "<<r2<<" "<<k<<endl;
				t1[r1].sum+=k;
				if(t1[r1].sum-k==0) k++;
				r1=t1[r1].fa;
				r2=t2[r2].fa;
			}
			if(r2<r1)
			{
				r1=t1[r1].fa;
			}
			if(r1<r2)
			{
				r2=t2[r2].fa;
			}
		}
//		cout<<i<<endl;
//		for(int j=1;j<=n;j++) cout<<t1[j].sum<<" ";
//		cout<<endl;
	}
//	cout<<t1[1].sum<<endl;
	int m=0;
	for(int i=1;i<=n;i++)
	{
		m=m+t1[i].sum;
	}
	cout<<m;
	return 0;
}