0分求调
查看原帖
0分求调
1315498
hao_tong楼主2025/6/14 21:37
#include<bits/stdc++.h>
using namespace std;
vector<int>z[100001];
vector<int>f[100001];
queue<int>q;
int n,a[100001],u,v,sum;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]==0)
            sum++;
    }
    for(int i=1;i<n;i++){
        cin>>u>>v;
        f[v].push_back(u);
        z[u].push_back(v);
    }
    for(int i=1;i<=n;i++){
        if(z[i].size()==0&&a[i]==0)
            q.push(i);
    }
    while(!q.empty()){
        int t=q.front();
        q.pop();
        sum--;
        for(int i=0;i<f[t].size();i++){
            int x=f[t][i];
            z[x].pop_back();
            if(z[x].size()==0&&a[x]==0)
                q.push(x);
        }
    }
    cout<<sum;
    return 0;
}
2025/6/14 21:37
加载中...