比赛 |
CSP2023-J模拟赛 |
评测结果 |
WWWWWWWWWW |
题目名称 |
新建题目 |
最终得分 |
0 |
用户昵称 |
健康铀 |
运行时间 |
2.873 s |
代码语言 |
C++ |
内存使用 |
3.46 MiB |
提交时间 |
2023-10-18 20:42:40 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int ans,w[2010],c[2010],n,f[2010],wc[2010],num,dp[2010];
void dfs(int x,int l){
if(w[l]>w[f[x]]&&wc[f[x]]==0){
wc[f[x]]=1;
ans++;
dfs(f[x],l);
}
if(c[x]+1<c[l]){
for(int i=x+1;i<=n;i++){
if(f[i]==x){
if((w[l]>w[i]&&wc[i]==0)&&w[i]>w[x]){
wc[i]=1;
ans++;
dfs(i,l);
}
}
}
}
}
int main(){
freopen("touch.in","r",stdin);
freopen("touch.out","w",stdout);
cin>>n;
f[1]=1;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<=n-1;i++){
int x,y;
cin>>x>>y;
c[y]=c[x]+1;
f[y]=x;
}
for(int i=1;i<=n;i++){
memset(wc,0,sizeof(wc));
wc[i]=1;
dfs(i,i);
}
cout<<ans;
return 0;
}