Pagini recente » Cod sursa (job #2890599) | Cod sursa (job #1938254) | Cod sursa (job #1121766) | Cod sursa (job #1194079) | Cod sursa (job #3168192)
#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;
}