比赛 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;
}