제출 #1051664

#제출 시각아이디문제언어결과실행 시간메모리
1051664MrAndriaMagic Tree (CEOI19_magictree)C++17
100 / 100
95 ms32540 KiB
#include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back // #define int long long int n,m,k,d,w,v1,sum[100005],day[100005],x; long long ans; map <int,long long> dp[100005]; vector <int> adj[100005]; void dfs(int x,int p){ for(auto u:adj[x]){ if(u!=p){ dfs(u,x); if(dp[u].size()>dp[x].size()){ swap(dp[u],dp[x]); } for(auto l:dp[u]){ dp[x][l.ff]+=l.ss; } dp[u].clear(); } } k=sum[x]; dp[x][day[x]]+=sum[x]; auto it=dp[x].upper_bound(day[x]); while(true){ if(it==dp[x].end())break; if((*it).ss>k){ (*it).ss-=k; break; } k-=(*it).ss; dp[x].erase(it++); // it++; } } signed main(){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n-1;i++){ cin>>x; adj[i+1].pb(x); adj[x].pb(i+1); } for(int i=1;i<=m;i++){ scanf("%d%d%d",&v1,&d,&w); day[v1]=d; sum[v1]=w; } dfs(1,0); for(auto u:dp[1]){ ans+=u.ss; } cout<<ans<<endl; }

컴파일 시 표준 에러 (stderr) 메시지

magictree.cpp: In function 'int main()':
magictree.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |     scanf("%d%d%d",&n,&m,&k);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
magictree.cpp:51:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   51 |         scanf("%d%d%d",&v1,&d,&w);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...