1 条题解

  • 1
    @ 2026-8-31 16:16:38
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define lowbit(x) x&-x
    const int INF=0x3f3f3f3f3f3f3f3f;
    const int N=1e5+10;
    const int M=2e6+10;
    vector<int>g[N];
    int n;
    int a[N];
    int vis[N];
    int dfs(int u){
    	if(vis[u]) return vis[u];
    	int cnt=0;
    	for(auto v:g[u]){
    		if(a[v]>=a[u])	continue;
    		cnt+=dfs(v);
    	}
    	return vis[u]=cnt+1;
    }
    int ans;
    signed main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	for(int i=1;i<n;i++){
    		int u,v;
    		cin>>u>>v;
    		g[u].push_back(v);
    		g[v].push_back(u);
    	}
    	for(int i=1;i<=n;i++){
    		ans=max(ans,dfs(i));
    	}
    	cout<<ans;
        return 0;
    }
    

    信息

    ID
    3583
    时间
    1000ms
    内存
    512MiB
    难度
    省选/NOI-
    标签
    递交数
    1
    已通过
    1
    上传者