#include using namespace std; #define ll long long #define pii pair #define vi vector #define pb emplace_back #define fi first #define se second #define all(n) (n).begin(),(n).end() #define siz(n) (int)n.size() #define IOS ios::sync_with_stdio(0), cin.tie(0); #define dbg(x) cerr<<#x<<" = "< E[mxn]; ll len[mxn], son[mxn], mnlen[mxn], pa[mxn], ans[mxn]; int N, M; void dfs_len(int nd,int p){ ll mn_down = 1e17; for(auto &[i,l]:E[nd]){ if(i == p) continue; pa[i] = nd; son[nd]++; len[i] = len[nd] + l; mnlen[i] = l; dfs_len(i, nd); mn_down = min(mn_down, mnlen[i]); } if(mn_down < 1e17) mnlen[nd] += mn_down; if(nd == 0) mnlen[nd] = 0; } priority_queue, greater> pq; int main(){ IOS; cin>>N>>M; M++; for(int i=M,p,l;i>name[i]; cin>>p>>l; E[p].pb(i,l); E[i].pb(p,l); } for(int i=1,p,l;i>p>>l; E[p].pb(i,l); E[i].pb(p,l); } dfs_len(0, -1); vector all_len; for(int i=M;i d){ pq.emplace(mnlen[nd], nd); break; } else if(son[nd] > 0) break; } } ans[i] = pq.size()+1; } for(int i=M;i