Submission #1241077

#TimeUsernameProblemLanguageResultExecution timeMemory
1241077vako_pClosing Time (IOI23_closing)C++20
8 / 100
216 ms63160 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define sd second #define debug(x) cerr << #x << "----> " << x << endl; //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("O3") const int mxN = 1e6 + 5; ll n,dis[mxN]; vector<pair<ll,ll>> v[mxN]; void dfs(ll at, ll par){ for(auto it : v[at]){ if(it.ff == par) continue; dis[it.ff] = dis[at] + it.sd; dfs(it.ff, at); } } int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W){ n = N; for(int i = 0; i < n - 1; i++){ v[U[i]].pb({V[i], W[i]}); v[V[i]].pb({U[i], W[i]}); } dis[X] = 0; dfs(X, X); multiset<ll> s; for(int i = 0; i < n; i++) s.insert(dis[i]); dis[Y] = 0; dfs(Y, Y); for(int i = 0; i < n; i++) s.insert(dis[i]); ll ans = 0; while(!s.empty()){ auto it = s.begin(); if(*it > K) break; K -= *it; s.erase(it); ans++; } for(int i = 0; i < n; i++) v[i].clear(); return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...