Submission #1206727

#TimeUsernameProblemLanguageResultExecution timeMemory
1206727em4ma2Biochips (IZhO12_biochips)C++20
30 / 100
51 ms9468 KiB
// اللهم صل على محمد وعلى ال محمد كما صليت على ابراهيم وعلى ال ابراهيم انك حميد مجيد #include "bits/stdc++.h" using namespace std; #define ll long long //#define int long long #define pb push_back #define applejuice ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); //const int mod=1e9+7; const int mod=998244353; const ll inf=1e17; const int mxsz=2e5+4; const int off=1<<20; vector<int>adj[mxsz]; int vis[mxsz]; int a[mxsz]; int mx=0; void dfs(int i){ vis[i]=1; mx=max(mx,a[i]); for (auto x:adj[i]){ if (!vis[x]){ dfs(x); } } } signed main(){ applejuice; int n,m; cin>>n>>m; int root; for (int i=1;i<=n;i++){ int p, x; cin>>p>>x; a[i]=x; if (p==0)root=i; adj[p].pb(i); } int sub=adj[root].size(); int abs=0; if (sub>=m){ vis[root]=1; int sum=0; for (auto x:adj[root]){ mx=0; dfs(x); sum+=mx; } abs=sum; } vector<int>le; for (int i=1;i<=n;i++){ if (adj[i].size()==0)le.pb(i); } vector<int>leaves; for (auto x:le){ leaves.pb(a[x]); } sort(leaves.begin(),leaves.end()); reverse(leaves.begin(),leaves.end()); int sum=0; for (int i=0;i<m;i++){ sum+=leaves[i]; } abs=max(abs,sum); cout<<abs<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...