#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<vector<pair<int, int>>> g(n + m);
for (int i = 1; i < n + m; i++) {
int p, c;
cin >> p >> c;
--p;
g[p].emplace_back(i, c);
g[i].emplace_back(p, c);
}
vector<long long> d(n, -1);
d[0] = 1;
vector<int> que(1);
for (int it = 0; it < int(que.size()); it++) {
int u = que[it];
for (auto [v, w] : g[u]) {
if (d[v] == -1) {
d[v] = d[u] + w;
que.push_back(v);
}
}
}
long long ans = LLONG_MAX;
for (int x : d) {
long long res = 0;
vector<pair<int, long long>> que(1, {0, 0});
vector<int> vis(n);
vis[0] = 1;
for (int b = 0; b < int(que.size()); b++) {
auto [u, dist] = que[b];
for (auto [v, w] : g[u]) {
if (!vis[v]) {
long long D = dist + d[v];
res += abs(D - x);
que.emplace_back(v, dist + D - x);
vis[v] = 1;
}
}
}
ans = min(ans, res);
}
cout << ans << '\n';
return 0;
}