比赛 CSP2023-J模拟赛 评测结果 WWWWWWWWWW
题目名称 新建题目 最终得分 0
用户昵称 GLESENA 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-10-18 20:05:09
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,ans=0;
class cls{
	public:
		int w,f,num;
		vector<int> c;
};
cls nd[2002];
int tot(int x)
{
	//cout<<x*(x-1)/2<<"\n";
	return x*(x-1)/2;
}
int dfs(int lf)
{
	if(nd[lf].c.size()==0)
	{
		if(nd[nd[lf].f].w>=nd[lf].w)
		{
			return 0;
		}
		return 1;
	}
	int sum=1;
	for(int i=0;i<nd[lf].c.size();i++)
	{
		sum+=dfs(nd[lf].c[i]);
	}
	//cout<<sum<<" ";
	if(nd[nd[lf].f].w>=nd[lf].w)
	{
		ans+=tot(sum);
		return 0;
	}
	return sum;
}
int main()
{
	ios::sync_with_stdio(false);
	freopen("touch.in","r",stdin);
	freopen("touch.out","w",stdout);
	cin>>n;
	int op1,op2;
	for(int i=1;i<=n;i++)
	{
		cin>>nd[i].w;
	}
	for(int i=1;i<n;i++)
	{
		cin>>op1>>op2;
		nd[op1].c.push_back(op2);
		nd[op2].f=op1;
	}
	ans+=tot(dfs(1));
	cout<<ans;
	return 0;
}