#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> sup;
vector <vector <int> > sub;
vector <bool> conf;
vector <bool> hap;
vector <bool> used;
int n, ans=0;
void dfs(int v){
if(used[v]==true)
return;
for (int i=0; i<sub[v].size(); ++i){
int to=sub[v][i];
dfs(to);
if(hap[to]==false){
hap[to]=true;
if(conf[v]==false){
conf[v]=true;
hap[v]=true;
hap[to]=true;
hap[sup[v]]=true;
++ans;
}
}
}
used[v]=true;
}
int main(){
cin>>n;
sup.resize(n);
hap.resize(n);
sub.resize(n);
used.assign(n,false);
conf.assign(n,false);
hap[0]=1;
sup[0]=0;
for(int i=1; i<n; ++i){
int s,h;
cin>>s>>h;
sub[s].push_back(i);
sup[i]=s;
hap[i]=h;
}
dfs(0);
cout<<ans;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGludD4gc3VwOwp2ZWN0b3IgPHZlY3RvciA8aW50PiA+IHN1YjsKdmVjdG9yIDxib29sPiBjb25mOwp2ZWN0b3IgPGJvb2w+IGhhcDsKdmVjdG9yIDxib29sPiB1c2VkOwppbnQgbiwgYW5zPTA7CnZvaWQgZGZzKGludCB2KXsKICAgIGlmKHVzZWRbdl09PXRydWUpCiAgICAgICAgcmV0dXJuOwogICAgZm9yIChpbnQgaT0wOyBpPHN1Ylt2XS5zaXplKCk7ICsraSl7CiAgICAgICBpbnQgdG89c3ViW3ZdW2ldOwogICAgICAgZGZzKHRvKTsKICAgICAgIGlmKGhhcFt0b109PWZhbHNlKXsKICAgICAgICAgICBoYXBbdG9dPXRydWU7CiAgICAgICAgICAgaWYoY29uZlt2XT09ZmFsc2UpewogICAgICAgICAgICAgIGNvbmZbdl09dHJ1ZTsKICAgICAgICAgICAgICBoYXBbdl09dHJ1ZTsKICAgICAgICAgICAgICBoYXBbdG9dPXRydWU7CiAgICAgICAgICAgICAgaGFwW3N1cFt2XV09dHJ1ZTsKICAgICAgICAgICAgICArK2FuczsKICAgICAgICAgICB9IAogICAgICAgfQogICAgfQogICAgdXNlZFt2XT10cnVlOwp9CmludCBtYWluKCl7CiAgICBjaW4+Pm47CiAgICBzdXAucmVzaXplKG4pOwogICAgaGFwLnJlc2l6ZShuKTsKICAgIHN1Yi5yZXNpemUobik7CiAgICB1c2VkLmFzc2lnbihuLGZhbHNlKTsKICAgIGNvbmYuYXNzaWduKG4sZmFsc2UpOwogICAgaGFwWzBdPTE7CiAgICBzdXBbMF09MDsKICAgIGZvcihpbnQgaT0xOyBpPG47ICsraSl7CiAgICAgICBpbnQgcyxoOwogICAgICAgY2luPj5zPj5oOwogICAgICAgc3ViW3NdLnB1c2hfYmFjayhpKTsKICAgICAgIHN1cFtpXT1zOwogICAgICAgaGFwW2ldPWg7CiAgICB9CiAgICBkZnMoMCk7CiAgICBjb3V0PDxhbnM7CiAgICByZXR1cm4gMDsKfQ==