# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
834062 | 2023-08-22T10:28:51 Z | NemanjaSo2005 | Magic Tree (CEOI19_magictree) | C++17 | 2000 ms | 16124 KB |
#include<bits/stdc++.h> #define ll long long using namespace std; map<int,ll> update[100005]; vector<int> stablo[100005],Brisi; int N,M,K,rod[100005],vred[100005],kad[100005]; void dfs(int gde){ if(stablo[gde].size()==0){ if(kad[gde]==-1) return; update[gde][kad[gde]]=vred[gde]; return; } for(int i=0;i<stablo[gde].size();i++) dfs(stablo[gde][i]); int najv=0; for(int i=1;i<stablo[gde].size();i++) if(update[stablo[gde][i]].size()>update[najv].size()) najv=stablo[gde][i]; swap(update[gde],update[najv]); for(int i=0;i<stablo[gde].size();i++){ if(stablo[gde][i]==najv) continue; int koji=stablo[gde][i]; for(auto it=update[koji].begin();it!=update[koji].end();it++) update[gde][it->first]+=it->second; } if(kad[gde]!=-1){ update[gde][kad[gde]]+=vred[gde]; auto it=update[gde].upper_bound(kad[gde]); ll vel=vred[gde]; // Brisi.clear(); // Brisi.shrink_to_fit(); for(it;it!=update[gde].end();it++){ if(it->second<=vel){ vel-=it->second; Brisi.push_back(it->first); } else{ it->second-=vel; break; } } for(int i=0;i<Brisi.size();i++) update[gde].erase(Brisi[i]); } for(int i=0;i<stablo[gde].size();i++){ update[stablo[gde][i]].clear(); } return; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>N>>M>>K; for(int i=2;i<=N;i++){ cin>>rod[i]; stablo[rod[i]].push_back(i); } for(int i=1;i<=N;i++) kad[i]=-1; int a; for(int i=1;i<=M;i++){ cin>>a; cin>>kad[a]>>vred[a]; } dfs(1); ll res=0; for(auto it=update[1].begin();it!=update[1].end();it++) res+=it->second; cout<<res<<"\n"; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7252 KB | Output is correct |
2 | Correct | 4 ms | 7252 KB | Output is correct |
3 | Incorrect | 3 ms | 7380 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 52 ms | 12156 KB | Output is correct |
2 | Execution timed out | 2088 ms | 16124 KB | Time limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7508 KB | Output is correct |
2 | Incorrect | 6 ms | 7508 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 314 ms | 10172 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7252 KB | Output is correct |
2 | Correct | 4 ms | 7252 KB | Output is correct |
3 | Incorrect | 3 ms | 7380 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 7 ms | 8020 KB | Output is correct |
2 | Correct | 24 ms | 10184 KB | Output is correct |
3 | Correct | 24 ms | 10188 KB | Output is correct |
4 | Correct | 20 ms | 10196 KB | Output is correct |
5 | Correct | 10 ms | 9044 KB | Output is correct |
6 | Incorrect | 207 ms | 12408 KB | Output isn't correct |
7 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7252 KB | Output is correct |
2 | Correct | 4 ms | 7252 KB | Output is correct |
3 | Incorrect | 3 ms | 7380 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 7252 KB | Output is correct |
2 | Correct | 4 ms | 7252 KB | Output is correct |
3 | Incorrect | 3 ms | 7380 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |