Submission #914183

#TimeUsernameProblemLanguageResultExecution timeMemory
914183LudisseyClosing Time (IOI23_closing)C++17
8 / 100
80 ms25416 KiB
#include <bits/stdc++.h> #include "closing.h" using namespace std; #define int long long vector<vector<pair<int,int>>> edges; signed max_score(signed N, signed rootX, signed rootY, long long K, std::vector<signed> U, std::vector<signed> V, std::vector<signed> W){ edges.clear(); edges.resize(N); for (int i = 0; i < N-1; i++) { edges[U[i]].push_back({V[i], W[i]}); edges[V[i]].push_back({U[i], W[i]}); } vector<int> visited(N); priority_queue<pair<int,int>> krusk; krusk.push({0,rootX}); krusk.push({0,rootY}); int sum=0; int cnt=0; while(!krusk.empty()){ int x=krusk.top().second, sumw=abs(krusk.top().first); krusk.pop(); if(sum+sumw>K) continue; visited[x]=true; sum+=sumw; cnt++; for (auto u : edges[x]) { int v=u.first,w=u.second; if(visited[v]) continue; krusk.push({-(sumw+w), v}); } } return (int)cnt; }
#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...