CCCPaste

Untitled

#include 
#include 
//#include
using namespace std;
const int maxn = 3e5 + 10;
vector graph[maxn];
int salary[maxn];
int parent[maxn];
int n, B;
int cnt;
void dfs(int node) {
    if(node == 0) {
        return;
    }
    for(int i = 0; i < (int) graph[node].size(); i++) {
        int neighbour = graph[node][i];
        if(neighbour == parent[node]) {
            if(salary[node] > salary[neighbour]) {
                cnt++;
                salary[neighbour] = salary[node];
                dfs(neighbour);
            }
        }
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin >> n >> B;
    salary[0] = B;
    for(int i = 1; i <= n; i++) {
        int r, p;
        cin >> salary[i] >> p;
        parent[i] = p;
        graph[i].push_back(p);
        graph[p].push_back(i);
    
    }
    for(int i = 1; i <= n; i++) {
        cnt = 0;
        dfs(i);
        cout << cnt << "\n";
    }
   return 0;
}
/*
 7
 1 2
 1 3
 2 4
 2 5
 3 6
 3 7
 **/