第9 、10个点WA了,求助大佬qwq
查看原帖
第9 、10个点WA了,求助大佬qwq
729457
ACehomoxue楼主2023/8/11 15:35
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <map>
using namespace std;
#define intt long long
#define el cout<<'\n'
intt n,m;
map<intt,vector<intt> > pos;
vector<intt> cur;
intt dfs(intt num,intt tmp) {
    if(cur[num]+tmp>m&&cur[num]==1) return 0;
    else {
        if(pos[num].empty()) {
            if(num!=1) return 1;
            else return 0;
        }else {
            intt flag=tmp,ans=0;
            if(cur[num]) flag++;
            else flag=0;
            for(intt i=0;i<pos[num].size();i++) {
                ans+=dfs(pos[num][i],flag);
            }
            return ans;
        }
    }
}
int main() {
    cin>>n>>m;
    cur.push_back(0);
    for(intt i=1;i<=n;i++) {
        intt number;
        cin>>number;
        cur.push_back(number);
    }
    for(intt i=1;i<n;i++) {
        intt a,b;
        cin>>a>>b;
        pos[a].push_back(b);
    }
    intt ans=dfs(1,0);
    cout<<ans;
    el;
    return 0;
}
2023/8/11 15:35
加载中...