#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll n,m,i,j,k,q;
cin>>n>>m;
vector<ll> p(n+m+1),c(n+m+1),deg(n+m+1,0);
ll ans=0;
for(i=2 ; i<=n+m ; i++){
cin>>p[i]>>c[i];
deg[p[i]]++;
ans+=c[i];
}
vector<priority_queue<ll>> pq(n+m+1);
for(i=n+m ; i>=2 ; i--){
ll l=0,r=0;
if(i<=n){
while(--deg[i]) pq[i].pop();
l=pq[i].top();
pq[i].pop();
r=pq[i].top();
pq[i].pop();
}
pq[i].push(l+c[i]);
pq[i].push(r+c[i]);
if(pq[i].size()>pq[p[i]].size()) swap(pq[i],pq[p[i]]);
while(pq[i].size()){
pq[p[i]].push(pq[i].top());
pq[i].pop();
}
}
while(deg[1]--) pq[1].pop();
vector<ll> f;
ll slope=-pq[1].size();
while(pq[1].size()){
f.push_back(pq[1].top());
pq[1].pop();
}
sort(f.begin(),f.end());
ll xbef=0;
for(i=0 ; i<f.size() ; i++){
ll xnow=f[i];
ll deltax=xnow-xbef;
ans+=deltax*slope;
slope++;
xbef=xnow;
}
cout<<ans;
return 0;
}