Cod sursa(job #3168192)

Utilizator TheAndreiEnache Andrei Alexandru TheAndrei Data 11 noiembrie 2023 18:42:23
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("arbore3.in");
ofstream out("arbore3.out");

int t, sum;

const int N = 1e6;

vector <int> g[N + 1];

int fre[N + 1], v[N + 1];

unordered_map <int, int> s;

int rasp = 0;

void dfs(int nod, int sp)
{
    if(s.find(sp - sum) != s.end())
        rasp += s[sp - sum];
    s[sp]++;
    for(int vecin:g[nod])
        dfs(vecin, sp + v[vecin]);
    s[sp]--;
}

int main()
{
    in >> t >> sum;
    for(int i = 1; i <= t; i++)
    {
        int x, y;
        in >> x >> y;
        v[i] = y;
        g[x].push_back(i);
    }
    s[0] = 1;
    dfs(1, v[1]);
    out << rasp;
    return 0;
}